Reputation: 3536
I have a prefilled DB in Assets, that will be copied and opened after App start. I have a activity who Displays the Column Name with rawQuery
Cursor c = database.rawQuery("SELECT _id, Name from DB
ORDER BY Name ASC", null);
ArrayList<String> values = new ArrayList<String>();
while (c.moveToNext()) {
values.add(c.getString(c.getColumnIndex("Name")));
}
c.close();
and starts onItemClick a new intent who Displays the other colums (new activity get "Name" variable with i.putExtra)
private void getSQLData() {
Bundle extras = getIntent().getExtras();
String Name = extras.getString("Name");
DataBaseHelper myDbHelper = new DataBaseHelper(null);
myDbHelper = new DataBaseHelper(this);
SQLiteDatabase database = myDbHelper.getWritableDatabase();
ListView lv = (ListView)findViewById(R.id.listView1);
Cursor c = database.rawQuery("SELECT * from DB WHERE Name='"+Name+"' ORDER BY Name ASC", null);
ArrayList<String> values = new ArrayList<String>();
while (c.moveToNext()) {
values.add(c.getString(c.getColumnIndex("Name")));
values.add(this.getString(R.string.x) + (c.getString(c.getColumnIndex("x"))+" "+this.getString(R.string.x)+":"));
values.add((c.getString(c.getColumnIndex("y")) + this.getString(R.string.y) + " " + this.getString(R.string.y)));
}
c.close();
ArrayAdapter<String> NamenDetails = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,
values);
}
lv.setAdapter(NamenDetails); }
I get all SQL datas I need, but in the Default View. But I Need it customized like for exmaple :
I tried many many tutorials with custom listview and simplecursoradapter but I think all be defeated by the ArrayListString.
I hope anyone can help me I get frustrated..
Thanks!
Upvotes: 2
Views: 3519
Reputation: 25267
This is an example of listview with its single row having two textviews. This the thing you wanted:
CustomListView.java:
package com.customlistview;
import java.util.ArrayList;
import resources.PlacesListAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class CustomListView extends Activity {
/** Called when the activity is first created. */
private ArrayList<String> mPlacesData1 = new ArrayList<String>();
private ArrayList<String> mPlacesData2 = new ArrayList<String>();
PlacesListAdapter mPLAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPlacesData1.clear();
mPlacesData2.clear();
mPlacesData1.add("ICD1");
mPlacesData2.add("SubTitle1");
mPlacesData1.add("ICD2");
mPlacesData2.add("SubTitle2");
mPlacesData1.add("ICD3");
mPlacesData2.add("SubTitle3");
mPlacesData1.add("ICD4");
mPlacesData2.add("SubTitle4");
mPlacesData1.add("ICD5");
mPlacesData2.add("SubTitle5");
mPlacesData1.add("ICD6");
mPlacesData2.add("SubTitle6");
mPlacesData1.add("ICD7");
mPlacesData2.add("SubTitle7");
mPlacesData1.add("ICD8");
mPlacesData2.add("SubTitle8");
ListView listView = (ListView) findViewById(R.id.listview);
mPLAdapter = new PlacesListAdapter(CustomListView.this, mPlacesData1, mPlacesData2);
listView.setAdapter(mPLAdapter);
}
}
PlaceListAdapter.java:
package resources;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.customlistview.R;
public class PlacesListAdapter extends BaseAdapter {
// private Context mContext;
private LayoutInflater mInflater;
private ArrayList<String> AL_id_text = new ArrayList<String>();
private ArrayList<String> AL_text = new ArrayList<String>();
public PlacesListAdapter(Context c, ArrayList<String> AL_name_time,
ArrayList<String> AL_name_time1) {
mInflater = LayoutInflater.from(c);
// mContext = c;
this.AL_id_text = AL_name_time;
this.AL_text = AL_name_time1;
}
public int getCount() {
return AL_id_text.size();
}
public Object getItem(int position) {
return AL_id_text.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder holder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.place_row, null);
holder = new ViewHolder();
holder.txt_maintext = (TextView) convertView
.findViewById(R.id.txt_maintext);
holder.txt_mtext = (TextView) convertView
.findViewById(R.id.txt_mtext);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txt_maintext.setText(AL_id_text.get(position));
holder.txt_mtext.setText(AL_text.get(position));
return convertView;
}
static class ViewHolder {
TextView txt_maintext;
TextView txt_mtext;
}
}
activity_main.xml:
<?xml version="1.0" encoding="UTF-8"?>
-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <ListView android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/listview"> </ListView> </LinearLayout>
place_row.xml:
<?xml version="1.0" encoding="UTF-8"?>
-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> -<LinearLayout android:orientation="vertical" android:layout_height="70dip" android:layout_width="match_parent" android:id="@+id/lin_main"> <TextView android:layout_height="20dip" android:layout_width="fill_parent" android:id="@+id/txt_maintext" android:singleLine="true" android:paddingRight="5dip" android:paddingLeft="5dip" android:layout_marginTop="5dip" android:textColor="#fff"/> <TextView android:layout_height="20dip" android:layout_width="fill_parent" android:id="@+id/txt_mtext" android:singleLine="true" android:paddingRight="5dip" android:paddingLeft="5dip" android:layout_marginTop="15dip" android:textColor="#fff"/> </LinearLayout> <ImageView android:layout_height="3dip" android:layout_width="match_parent" android:background="#0000ff"/> </LinearLayout>
This is an example. You can make necessary edits to achieve what you want.
Upvotes: 4