基于来自Sqlite数据库

时间:2016-08-02 13:26:17

标签: android sqlite listview data-retrieval

我正在制作表格。我已经将数据保存到数据库中了。现在我已经完成了显示特定数据(表单和日期的代码)以将表单区分为列表视图。当用户点击项目时,它将开始预定义活动并用相应的数据填充列。

例如:用户看到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,.°&apos;"
            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,.°&apos;"
            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");
        }
    }
}

我现在应该如何从数据库中获取检索活动数据(在[仅保存]之前未在代码中提及)?

1 个答案:

答案 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];
        }
    };
}

通过这个你可以轻松实现。希望这会有所帮助:)