2

I am using ListActivity to display simple text with SimpleCursorAdapter to get the texts from my database. I have tried to debug the problem and found that the cursor is successfully fetching the result but the text is not displayed in the ListView.

Following is the ListActivity code I am using.

public class MyListActivity extends ListActivity{ Cursor myCursor; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); myCursor = getData(); startManagingCursor(myCursor); ListAdapter myAdapter = new SimpleCursorAdapter(this, R.layout.display_details, myCursor, new String[]{MyDbHelper.ID_FIELD, MyDbHelper.NAME_FIELD}, new int[]{R.id.row_id, R.id.row_name}); setListAdapter(myAdapter); } private Cursor getData() { return MyDBHelper.getRoutes(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); routesCursor.close(); } } 

and following is my xml file for each row in ListView

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/row_id" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/row_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/row_id" android:layout_toRightOf="@+id/row_id" android:textAppearance="?android:attr/textAppearanceLarge" /> </RelativeLayout> 

and my layout for ListActivity is as following

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"> </ListView> </RelativeLayout> 

Please provide me the solution. Thanks in advance.

2
  • Did you try myAdapter.notifyDataSetChanged() after setListAdapter Commented Jun 18, 2013 at 10:00
  • which TextView is not showing "row_id" or "row_name" or both? Commented Aug 17, 2013 at 5:36

1 Answer 1

1

This code can help your problem.

package com.example.getkontakdata; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.provider.ContactsContract; import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnItemClickListener { List<String> name1 = new ArrayList<String>(); List<String> phno1 = new ArrayList<String>(); MyAdapter ma; Button select; CheckBox cb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getAllCallLogs(this.getContentResolver()); final ListView lv= (ListView) findViewById(R.id.lv); cb = (CheckBox) findViewById(R.id.checkBox1); ma = new MyAdapter(); lv.setAdapter((ListAdapter) ma); lv.setOnItemClickListener(this); lv.setItemsCanFocus(false); lv.setTextFilterEnabled(true); // adding select = (Button) findViewById(R.id.button1); select.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub StringBuilder checkedcontacts= new StringBuilder(); System.out.println(".............." + ma.mCheckStates.size()); for(int i = 0; i < phno1.size(); i++) { if(ma.mCheckStates.get(i) == true) { checkedcontacts.append(phno1.get(i).toString()); checkedcontacts.append(";"); } else { System.out.println(".. Not Checked ......" + phno1.get(i).toString()); } } } }); } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub ma.toggle(arg2); } public void getAllCallLogs(ContentResolver cr) { Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); while (phones.moveToNext()) { String name=phones.getString (phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phoneNumber = phones.getString (phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); //System.out.println(".................." + phoneNumber); name1.add(name); phno1.add(phoneNumber); } phones.close(); } class MyAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener { private SparseBooleanArray mCheckStates; //private SparseBooleanArray nCheckStates; LayoutInflater mInflater; TextView tv1,tv; CheckBox cb; MyAdapter() { mCheckStates = new SparseBooleanArray(name1.size()); mCheckStates = new SparseBooleanArray(phno1.size()); mInflater = (LayoutInflater)MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public String get(int position) { // TODO Auto-generated method stub return null; } @Override public int getCount() { // TODO Auto-generated method stub return name1.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View vi=convertView; if(convertView==null) vi = mInflater.inflate(R.layout.row, null); TextView tv= (TextView) vi.findViewById(R.id.textView1); tv1= (TextView) vi.findViewById(R.id.textView2); cb = (CheckBox) vi.findViewById(R.id.checkBox1); tv.setText("Nama : "+ name1.get(position)); tv1.setText("Nomor Kontak : "+ phno1.get(position)); cb.setTag(position); cb.setChecked(mCheckStates.get(position, false)); cb.setOnCheckedChangeListener((OnCheckedChangeListener) this); return vi; } public boolean isChecked(int position) { return mCheckStates.get(position, false); } public void setChecked(int position, boolean isChecked) { mCheckStates.put(position, isChecked); System.out.println("hello..........."); notifyDataSetChanged(); } public void toggle(int position) { setChecked(position, !isChecked(position)); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub mCheckStates.put((Integer) buttonView.getTag(), isChecked); } } } 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.