我正在制作表格。我已经将数据保存到数据库中了。现在我已经完成了显示特定数据(表单和日期的代码)以将表单区分为列表视图。当用户点击项目时,它将开始预定义活动并用相应的数据填充列。
例如:用户看到5行列表视图项。他点击了第二行,它将显示活动填充以及该行的相应数据。但当他点击第三行时,它将在同一活动中显示不同的数据。 我已经尝试了几天,但我无法弄明白。我是android初学者,所以我几乎不可能自己做。所以我非常感谢你的每一次帮助。
这是相同的代码,希望它足够了。
DataListActivity
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());
}
}
}
DataProvider.java
public class DataProvider {
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;
}
}
DbOperations
public Cursor getInformations(SQLiteDatabase db)
{
Cursor cursor;
String[] projections = {FormDatabase.FormularovaDatabaze.KOD_USEKU_KOMUNIKACE,
FormDatabase.FormularovaDatabaze.DNE};
cursor = db.query(FormDatabase.FormularovaDatabaze.JMENO_TABULKY,projections,null,null,null,null,null);
return cursor;
}
ListDataAdapter.java
public class ListDataAdapter extends ArrayAdapter{
List list = new ArrayList();
public ListDataAdapter(Context context, int resource) {
super(context, resource);
}
static class LayoutHandler
{
TextView kod,den;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@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) {
LayoutHandler layoutHandler;
View row = convertView;
if (row == null)
{
LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.row_layout,parent,false);
layoutHandler = new LayoutHandler();
layoutHandler.kod = (TextView)row.findViewById(R.id.t_kod);
layoutHandler.den = (TextView) row.findViewById(R.id.t_den);
row.setTag(layoutHandler);
}
else
{
layoutHandler=(LayoutHandler) row.getTag();
}
DataProvider dataProvider = (DataProvider) this.getItem(position);
layoutHandler.kod.setText(dataProvider.getKod());
layoutHandler.den.setText(dataProvider.getDen());
return row;
}
}
ActivityWhereIWanttheRetrievedData.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/scrollView"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="jansoldat.formular100.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Úsek komunikace:"
android:id="@+id/textView81"
android:textStyle="bold"
android:textSize="20dp"
android:textColor="#870b0f"
android:layout_marginTop="30dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText_Usek_komunikace"
android:layout_below="@+id/textView81"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kód úseku komunikace:"
android:id="@+id/textView82"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/editText_Usek_komunikace"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="15dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/textView82"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kódy sousedících objektů/ komunikací"
android:id="@+id/textView83"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/editText2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="15dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="na počátku úseku komunikace:"
android:id="@+id/textView84"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/textView83"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/textView81"
android:layout_alignEnd="@+id/textView81"
android:layout_marginTop="10dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText3"
android:layout_below="@+id/textView84"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/textView84"
android:layout_alignEnd="@+id/textView84" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="na konci úseku komunikace:"
android:id="@+id/textView85"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/textView83"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_toRightOf="@+id/textView86"
android:layout_toEndOf="@+id/textView86"
android:layout_marginTop="10dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText4"
android:layout_below="@+id/textView84"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignLeft="@+id/textView85"
android:layout_alignStart="@+id/textView85" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Součást měřené trasy/ lokality:"
android:id="@+id/textView86"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/editText3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="15dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText5"
android:layout_below="@+id/textView86"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GPS souřadnice"
android:id="@+id/textView87"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/editText5"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="15dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="počátek měřeného úseku:"
android:id="@+id/textView88"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/textView87"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText6"
android:layout_alignParentStart="true"
android:inputType="numberDecimal"
android:digits="0123456789,.°'"
android:layout_below="@+id/textView88"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="konec měřeného úseku:"
android:id="@+id/textView89"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/editText6"
android:layout_alignParentLeft="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText7"
android:digits="0123456789,.°'"
android:inputType="numberDecimal"
android:layout_below="@+id/textView89"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mapové schéma:"
android:id="@+id/textView90"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/editText7"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="15dp" />
<ImageView
android:layout_width="250dp"
android:layout_height="250dp"
android:id="@+id/imageView_mapa"
android:contextClickable="false"
android:adjustViewBounds="false"
android:background="#850202"
android:layout_below="@+id/textView90"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Měření provedl(i):"
android:id="@+id/textView91"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/imageView_mapa"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="15dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="dne:"
android:id="@+id/textView92"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_above="@+id/editText8"
android:layout_toRightOf="@+id/textView86"
android:layout_toEndOf="@+id/textView86" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="date"
android:ems="10"
android:id="@+id/editText8"
android:layout_below="@+id/textView91"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/textView88"
android:layout_alignEnd="@+id/textView88" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText9"
android:layout_below="@+id/textView92"
android:layout_alignLeft="@+id/textView92"
android:layout_alignStart="@+id/textView92"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Délka úseku komunikace:"
android:id="@+id/textView93"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_alignParentStart="true"
android:layout_below="@+id/editText9"
android:layout_alignParentLeft="true"
android:layout_marginTop="10dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText10"
android:layout_alignParentStart="true"
android:inputType="numberDecimal"
android:digits="0123456789,.m"
android:layout_below="@+id/textView93"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Typ komunikace:"
android:id="@+id/textView94"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/editText10"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="15dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Materiál povrchu:"
android:id="@+id/textView95"
android:layout_column="0"
android:textColor="#870b0f"
android:textStyle="bold"
android:layout_below="@+id/radioGroup3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="15dp" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/radioGroup3"
android:layout_below="@+id/textView94"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="pás pro pěší (chodník)"
android:id="@+id/radioButton"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="stezka pro chodce (označeno značkou C07)"
android:id="@+id/radioButton2"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="stezka pro chodce a cyklisty ( označeno značkou C09 nebo C10)"
android:id="@+id/radioButton3"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="nezpevněná komunikace (pěšina, polní cesta...)"
android:id="@+id/radioButton4"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="pěší zóna (označeno značkou IP27)"
android:id="@+id/radioButton5"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="obytná zóna (označeno značkou IP26)"
android:id="@+id/radioButton6"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="pohyb po motoristické komunikaci (krajnice...)"
android:id="@+id/radioButton7"
android:checked="false" />
</RadioGroup>
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spinner2"
android:layout_below="@+id/textView95"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText11"
android:visibility="visible"
android:layout_below="@+id/spinner2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
</ScrollView>
修改
这是我更新的代码:
DataListActivity.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");
}
}
}
我现在应该如何从数据库中获取检索活动数据(在[仅保存]之前未在代码中提及)?
答案 0 :(得分:0)
您必须为listview编写setOnitemclicklistener。在里面从列表中获取该位置值。下面是OnItemClickListener的代码,
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(DataListActivity.this, DetailActivity.class);
intent.putExtra("data", list.get(position);
startActivity(intent);
}
});
在DetailActivity类中获取如下所示的值。
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
DataProvider dataProvider = bundle.getParcelable("data");
}
为了实现这一点,您必须在DataListActivity类中维护List本身。您还必须在模型类中实现Parcelable,如下所示。
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];
}
};
}
通过这个你可以轻松实现。希望这会有所帮助:)