2012-04-30 47 views
0

我的问题多texviews情况如下:使用该example,我试图创建一个列表视图,从数据库中2 ArrayLists(名称&号)发生并输出其数据到TextView的自定义适配器在列表中。数据会显示在列表中,但是它们会单独显示,这意味着名称会显示数字,您可以单独单击它们,而不是将它们合并为列表中的一个条目。附加是必要的代码。安卓:在列表视图排错

我的适配器类:

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; 
    } 


} 

的ListView 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] 
+0

描述问题。你是什​​么意思他们是错印?它是如何打印错误的?当您滚动时它只是错误打印,还是前几项打印错误? – Gophermofur

+0

“您可以单独单击它们,而不是将它们放在一起作为列表中的一个条目”请发布您实施的任何点击监听器。 – Sam

+0

好,所以你知道如何在android手机上,你可以进入你最近拨打的标签,它会显示你的人名和数字在一个插槽中,当你点击它时,一切都会亮起来。所以这就是我想要做的,但它结束发生的是,名称被输出到一个插槽和数字到另一个,我不知道为什么。我希望更清楚。干杯 –

回答

0

我对你的问题感到困惑,但是看着教程和你的代码的区别我会做一个失明猜。

您扩展ListActivity不是一个普通的活动,如例如,对于一个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(); 
} 
+0

对不起,如果问题很混乱,我在上面的评论中澄清 –

0

举行两次TextViews,让你ViewHolder类扩展LinearLayout并将其设置为垂直。或者,您可以使用一个TextView而不是自己的类/ linearlayout,并将其设置为多行,然后将文本设置为名称+“\ n”+数字