0

我的问题如下:使用此示例,我尝试为列表视图创建一个自定义适配器,该适配器ArrayLists从数据库中获取 2(名称和数字)并将其数据输出到列表中的文本视图中。数据显示在列表中,但是它们单独显示,这意味着名称显示为数字,您可以单独单击它们,而不是两者一起作为列表中的一个条目。附上必要的代码。

我的适配器类:

public class ListViewCustomAdapter extends BaseAdapter {  

    public Activity context;  
    public LayoutInflater inflater; 
    ArrayList<String> names = new ArrayList<String>();
    ArrayList<String> nos = new ArrayList<String>();


    public ListViewCustomAdapter(Activity context,ArrayList<String> names, ArrayList<String> nos) {  
        super();  

        this.context = context;  
        this.names = names;
        this.nos=nos;

        this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
    }
    public int getCount() {  
        // TODO Auto-generated method stub  
        return names.size();  
    }  

    public Object getItem(int position) {  
        // TODO Auto-generated method stub  
        return null;  
    }  

    public long getItemId(int position) {  
        // TODO Auto-generated method stub  
        return 0;  
    }  

    public static class ViewHolder  
    {  
        TextView txtViewName;  
        TextView txtViewNo;  
    }  
    public View getView(int position, View convertView, ViewGroup parent) {  
        // TODO Auto-generated method stub  

        ViewHolder holder;  
        if(convertView==null)  
        {  
            holder = new ViewHolder();  
            convertView = inflater.inflate(R.layout.editlist, null);  

           // holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo);  
            holder.txtViewName = (TextView) convertView.findViewById(R.id.textView1);  
            holder.txtViewNo = (TextView) convertView.findViewById(R.id.textView2);  

            convertView.setTag(holder);  
        }  
        else  
            holder=(ViewHolder)convertView.getTag();  

        //holder.imgViewLogo.setImageResource(R.drawable.icon);  
        holder.txtViewName.setText(names.get(position));  
        holder.txtViewNo.setText(nos.get(position));  

        return convertView;  
    }   


}

列表视图 xml:

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


    <TextView  
        android:textAppearance="?android:attr/textAppearanceLarge"  
        android:layout_height="wrap_content"  
        android:text="TextView"  
        android:layout_width="wrap_content"  
        android:id="@+id/textView1"   
        android:layout_marginLeft="2dip">  
    </TextView>  

    <TextView  
        android:layout_height="wrap_content"  
        android:text="TextView"  
        android:layout_width="wrap_content"  
        android:id="@+id/textView2"  
        android:layout_toRightOf="@+id/textView1"   
        android:layout_marginLeft="2dip">  
    </TextView>    

</RelativeLayout>  

使用适配器的主要活动:

public class EditActivity extends ListActivity implements OnClickListener, OnItemClickListener{
    Button b_add;
    ListView lv;
    SQLUtils sqlUtils = new SQLUtils(this);
     ListViewCustomAdapter adapter; 
     ArrayList<String> names = new ArrayList<String>();
        ArrayList<String> nos = new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         setContentView(R.layout.edit_layout);

         b_add = (Button)findViewById(R.id.b_add);
         b_add.setOnClickListener(this);
         lv = (ListView)findViewById(android.R.id.list);
         names=sqlUtils.getActions(1);
         nos=sqlUtils.getActions(2);

         //lv.setOnItemClickListener(this);
         adapter = new ListViewCustomAdapter(this, names, nos);  
            lv.setAdapter(adapter); 
    }
[1]
4

2 回答 2

0

如果您希望适配器中的每个项目都包含两个 TextView,请让您的 ViewHolder 类扩展 LinearLayout 并将其设置为垂直。或者,您可以使用一个 TextView 而不是您自己的类/线性布局,并将其设为多行,然后将文本设置为 name + "\n" + number

于 2012-05-01T15:00:48.380 回答
0

我对您的问题感到困惑,但是查看教程和您的代码中的差异,我会盲目猜测。

您扩展 ListActivity 而不是像示例中的常规 Activity ,对于 ListActivity 您定义一个 onListItemClick 侦听器,如下所示:

public void onListItemClick(AdapterView<?> parent, View view, int position, long id) {
    String title = ((TextView) view.findViewById(R.id.textView1)).getText().toString();
    String description = ((TextView) view.findViewById(R.id.textView2)).getText().toString();
    Toast.makeText(this, "Title => " + title + " => n Description " + description, Toast.LENGTH_SHORT).show();
}
于 2012-04-30T16:25:44.190 回答