Android 无法在ListView中查看文本

Android 无法在ListView中查看文本,android,android-listview,listactivity,simplecursoradapter,Android,Android Listview,Listactivity,Simplecursoradapter,我使用ListActivity显示简单文本,并使用SimpleCursorAdapter从数据库中获取文本。我试着调试这个问题,发现光标成功地获取了结果,但是文本没有显示在ListView中 下面是我正在使用的ListActivity代码 public class MyListActivity extends ListActivity{ Cursor myCursor; @Override protected void onCreate(Bundle savedInst

我使用ListActivity显示简单文本,并使用SimpleCursorAdapter从数据库中获取文本。我试着调试这个问题,发现光标成功地获取了结果,但是文本没有显示在ListView中

下面是我正在使用的ListActivity代码

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();
    }
}
下面是ListView中每一行的xml文件

<?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>

我的ListActivity布局如下

<?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>


请给我提供解决方案。提前感谢。

此代码可以帮助解决您的问题

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);    
     }
}
 }
package com.example.getkontakdata;
导入java.util.ArrayList;
导入java.util.List;
导入android.os.Bundle;
导入android.provider.contacts合同;
导入android.app.Activity;
导入android.content.ContentResolver;
导入android.content.Context;
导入android.content.Intent;
导入android.database.Cursor;
导入android.util.SparseBooleanArray;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.BaseAdapter;
导入android.widget.Button;
导入android.widget.CheckBox;
导入android.widget.CompoundButton;
导入android.widget.CompoundButton.OnCheckedChangeListener;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MainActivity扩展活动实现了McClickListener{
列表名称1=新的ArrayList();
List phno1=new ArrayList();
粘液瘤;
按钮选择;
复选框cb;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getAllCallLogs(this.getContentResolver());
最终ListView lv=(ListView)findViewById(R.id.lv);
cb=(复选框)findViewById(R.id.checkBox1);
ma=新的MyAdapter();
lv.setAdapter((ListAdapter)ma);
lv.setOnItemClickListener(本);
lv.setItemsCanFocus(假);
lv.setTextFilterEnabled(真);
//添加
选择=(按钮)findViewById(R.id.button1);
select.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
StringBuilder checkedcontacts=新建StringBuilder();
System.out.println(“……………”+ma.mCheckStates.size());
对于(int i=0;i