java Android基于onclick listview从SQLite数据库检索数据
所以我的问题是,我需要将数据从数据库检索到一个特定的预定义活动。当我点击listview中的任何项目时,它每次都会显示相同的活动,只是填充了不同的数据。第1项的数据与第2项不同。我已经完成了保存数据和打开特定预定义活动。但我不知道如何用我的数据填充活动。我开始绝望了。所以我非常感激你的帮助
这是我的代码 数据列表活动。java
public class DataListActivity extends AppCompatActivity {
ListView listView;
SQLiteDatabase sqLiteDatabase;
DbOperace dbOperace;
Cursor cursor;
ListDataAdapter listDataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.data_list_layout);
listView = (ListView) findViewById(R.id.lis_view);
listDataAdapter = new ListDataAdapter(getApplicationContext(),R.layout.row_layout);
listView.setAdapter(listDataAdapter);
dbOperace = new DbOperace(getApplicationContext());
sqLiteDatabase = dbOperace.getReadableDatabase();
cursor = dbOperace.getInformations(sqLiteDatabase);
if (cursor.moveToFirst())
{
do {
String kod,den;
kod = cursor.getString(0);
den = cursor.getString(1);
DataProvider dataProvider = new DataProvider(kod,den);
listDataAdapter.add(dataProvider);
}while (cursor.moveToNext());
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(DataListActivity.this, RetrieveData.class);
intent.putExtra("data", listView.getSelectedItemPosition());
startActivity(intent);
}
});
}
}
检索数据
public class RetrieveData extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrieve_data);
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
DataProvider dataProvider = bundle.getParcelable("data");
}
}
}
数据提供者。java
package jansoldat.formular100;
import 安卓.os.Parcel;
import 安卓.os.Parcelable;
/**
* Created by Monsignore Frajeris on 02.08.2016.
*/
public class DataProvider implements Parcelable {
private String kod;
private String den;
public String getKod() {
return kod;
}
public void setKod(String kod) {
this.kod = kod;
}
public String getDen() {
return den;
}
public void setDen(String den) {
this.den = den;
}
public DataProvider(String kod, String den)
{
this.kod=kod;
this.den=den;
}
protected DataProvider(Parcel in) {
kod = in.readString();
den = in.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(kod);
dest.writeString(den);
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<DataProvider> CREATOR = new Parcelable.Creator<DataProvider>() {
@Override
public DataProvider createFromParcel(Parcel in) {
return new DataProvider(in);
}
@Override
public DataProvider[] newArray(int size) {
return new DataProvider[size];
}
};
}
检索数据。xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
安卓:layout_width="fill_parent"
安卓:layout_height="fill_parent"
安卓:id="@+id/scrollView"
xmlns:安卓="http://schemas.安卓.com/apk/res/安卓">
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="fill_parent"
安卓:layout_height="fill_parent"
安卓:paddingBottom="@dimen/activity_vertical_margin"
安卓:paddingLeft="@dimen/activity_horizontal_margin"
安卓:paddingRight="@dimen/activity_horizontal_margin"
安卓:paddingTop="@dimen/activity_vertical_margin"
tools:context="jansoldat.formular100.MainActivity">
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Úsek komunikace:"
安卓:id="@+id/textView81"
安卓:textStyle="bold"
安卓:textSize="20dp"
安卓:textColor="#870b0f"
安卓:layout_marginTop="30dp"
安卓:layout_alignParentTop="true"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/editText_Usek_komunikace"
安卓:layout_below="@+id/textView81"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Kód úseku komunikace:"
安卓:id="@+id/textView82"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/editText_Usek_komunikace"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="15dp" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/kod"
安卓:layout_below="@+id/textView82"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Kódy sousedících objektů/ komunikací"
安卓:id="@+id/textView83"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/kod"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true"
安卓:layout_marginTop="15dp" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="na počátku úseku komunikace:"
安卓:id="@+id/textView84"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/textView83"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignRight="@+id/textView81"
安卓:layout_alignEnd="@+id/textView81"
安卓:layout_marginTop="10dp" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/editText3"
安卓:layout_below="@+id/textView84"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignRight="@+id/textView84"
安卓:layout_alignEnd="@+id/textView84" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="na konci úseku komunikace:"
安卓:id="@+id/textView85"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/textView83"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true"
安卓:layout_toRightOf="@+id/textView86"
安卓:layout_toEndOf="@+id/textView86"
安卓:layout_marginTop="10dp" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/editText4"
安卓:layout_below="@+id/textView84"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true"
安卓:layout_alignLeft="@+id/textView85"
安卓:layout_alignStart="@+id/textView85" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Součást měřené trasy/ lokality:"
安卓:id="@+id/textView86"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/editText3"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="15dp" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/editText5"
安卓:layout_below="@+id/textView86"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="GPS souřadnice"
安卓:id="@+id/textView87"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/editText5"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="15dp" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="počátek měřeného úseku:"
安卓:id="@+id/textView88"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/textView87"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="10dp"
安卓:layout_marginLeft="10dp" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/editText6"
安卓:layout_alignParentStart="true"
安卓:inputType="numberDecimal"
安卓:digits="0123456789,.°'"
安卓:layout_below="@+id/textView88"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true"
安卓:layout_marginLeft="10dp"
安卓:layout_marginRight="10dp" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="konec měřeného úseku:"
安卓:id="@+id/textView89"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/editText6"
安卓:layout_alignParentLeft="true"
安卓:layout_marginTop="10dp"
安卓:layout_marginLeft="10dp" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/editText7"
安卓:digits="0123456789,.°'"
安卓:inputType="numberDecimal"
安卓:layout_below="@+id/textView89"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginLeft="10dp"
安卓:layout_marginRight="10dp" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Mapové schéma:"
安卓:id="@+id/textView90"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/editText7"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="15dp" />
<ImageView
安卓:layout_width="250dp"
安卓:layout_height="250dp"
安卓:id="@+id/imageView_mapa"
安卓:contextClickable="false"
安卓:adjustViewBounds="false"
安卓:background="#850202"
安卓:layout_below="@+id/textView90"
安卓:layout_centerHorizontal="true"
安卓:layout_marginTop="10dp" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Měření provedl(i):"
安卓:id="@+id/textView91"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/imageView_mapa"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="15dp" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="dne:"
安卓:id="@+id/textView92"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_above="@+id/editText8"
安卓:layout_toRightOf="@+id/textView86"
安卓:layout_toEndOf="@+id/textView86" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:inputType="date"
安卓:ems="10"
安卓:id="@+id/editText8"
安卓:layout_below="@+id/textView91"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignRight="@+id/textView88"
安卓:layout_alignEnd="@+id/textView88" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/den"
安卓:layout_below="@+id/textView92"
安卓:layout_alignLeft="@+id/textView92"
安卓:layout_alignStart="@+id/textView92"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Délka úseku komunikace:"
安卓:id="@+id/textView93"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_alignParentStart="true"
安卓:layout_below="@+id/den"
安卓:layout_alignParentLeft="true"
安卓:layout_marginTop="10dp" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/editText10"
安卓:layout_alignParentStart="true"
安卓:inputType="numberDecimal"
安卓:digits="0123456789,.m"
安卓:layout_below="@+id/textView93"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Typ komunikace:"
安卓:id="@+id/textView94"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/editText10"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="15dp" />
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Materiál povrchu:"
安卓:id="@+id/textView95"
安卓:layout_column="0"
安卓:textColor="#870b0f"
安卓:textStyle="bold"
安卓:layout_below="@+id/radioGroup3"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="15dp" />
<RadioGroup
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:id="@+id/radioGroup3"
安卓:layout_below="@+id/textView94"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_marginTop="10dp">
<RadioButton
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="pás pro pěší (chodník)"
安卓:id="@+id/radioButton"
安卓:checked="false" />
<RadioButton
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="stezka pro chodce (označeno značkou C07)"
安卓:id="@+id/radioButton2"
安卓:checked="false" />
<RadioButton
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="stezka pro chodce a cyklisty ( označeno značkou C09 nebo C10)"
安卓:id="@+id/radioButton3"
安卓:checked="false" />
<RadioButton
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="nezpevněná komunikace (pěšina, polní cesta...)"
安卓:id="@+id/radioButton4"
安卓:checked="false" />
<RadioButton
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="pěší zóna (označeno značkou IP27)"
安卓:id="@+id/radioButton5"
安卓:checked="false" />
<RadioButton
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="obytná zóna (označeno značkou IP26)"
安卓:id="@+id/radioButton6"
安卓:checked="false" />
<RadioButton
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="pohyb po motoristické komunikaci (krajnice...)"
安卓:id="@+id/radioButton7"
安卓:checked="false" />
</RadioGroup>
<Spinner
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/spinner2"
安卓:layout_below="@+id/textView95"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true" />
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/editText11"
安卓:visibility="visible"
安卓:layout_below="@+id/spinner2"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true" />
</RelativeLayout>
</ScrollView>
编辑3 ListDataAdapter
public class ListDataAdapter extends BaseAdapter{
DbOperace dbOperace;
Context context;
SurfaceHolder newViewHolder;
SQLiteDatabase sqliteDatabase;
List newsList = new ArrayList();
ArrayList<ClassA> list = new ArrayList();
public class NewViewHolder
{
TextView kod,den;
}
@Override
public long getItemId(int position) {
return list.get(position).getId();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View new_view = convertView;
try {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (new_view == null) {
new_view = inflater.inflate(R.layout.row_layout, null);
newViewHolder = new NewViewHolder();
newViewHolder.kod =((TextView) new_view.findViewById(R.id.t_kod));
newViewHolder.setTag(newViewHolder);
} else {
newViewHolder = (NewViewHolder)new_view.getTag();
newViewHolder.kod.setText ="your text";
}
// set parameters here
} catch (Exception e) {
}
return new_view;
}}
ClassA
public class ClassA {
private long id;
public long getId()
{
return id;
}
public ClassA(long id)
{
this.id=id;
}
}
编辑4
import 安卓.database.Cursor;
import 安卓.database.sqlite.SQLiteDatabase;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.widget.EditText;
import 安卓.widget.ImageView;
import 安卓.widget.RadioButton;
public class RetrieveData extends AppCompatActivity {
EditText usek_kom,kod_1,pocatek_1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrieve_data);
usek_kom = (EditText) findViewById(R.id.usek_komunikace1);
kod_1 = (EditText) findViewById(R.id.kod_1);
pocatek_1 = (EditText) findViewById(R.id.pocatek_1);
Bundle bundle = getIntent().getExtras();
if (bundle!=null){
DataProvider dataProvider = bundle.getParcelable("data");
usek_kom.setText(dataProvider.getDen());
kod_1.setText(dataProvider.getKod());
pocatek_1.setText(dataProvider.getUsek_komun());
}
}
}
# 1 楼答案
首先,创建一个名为ClassA的类来保存列表项,并在其上实现getId()方法
然后在类中创建类的数组:
用
extends BaseAdapter
更改extends ArrayAdabter
,并实现如下getItemId(int position)
方法:在
listDataAdapter
类中使用非静态viewHolder
。欲了解更多信息,请访问this post编辑:
ViewHolder类保存listView项,以便将它们放在正确的位置
# 2 楼答案
使用以下代码查看listView如何与数据库配合使用:
创建一个新项目,复制并粘贴代码。 请不要忘记将项目包名称添加到每个类中
课堂主要活动。java
类别。java
类别类别StatAdapter
类ListDataBaseAdapter
主要活动。xml
单一类别。xml
就这些 希望对你有用