2012-04-30 44 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」+數字