2014-03-05 109 views
0

我的代碼:從onCreate Override開始,然後底部是我的ArrayAdapter。我試圖從數組中添加單個字符串到一個TextView。當我運行該應用程序時,它會將所有字符串放在數組中的每個TextView上。謝謝參觀。從數組列表中添加單個字符串到TextView

MyListAdapter adapter = new MyListAdapter(mMyStringArrayArray()); 
setListAdapter(adapter); 

...

private class MyListAdapter extends ArrayAdapter<String> { 

    public MyListAdapter(ArrayList<String> strings) { 
     super(getActivity(), 0, strings); 


     } 

    @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

     // If we weren't given a view, inflate one 
    if (convertView == null) { 
      convertView = getActivity().getLayoutInflater().inflate(R.layout.my_list, null); 
     }      

     LinearLayout mLinearLayout = (LinearLayout)convertView.findViewById(R.id.my_list_linearLayout); 
     TextView[] strings = new TextView[mMyStringArray.size()]; 


     for (int i = 0; i < mMyStringArray().size(); i++) { 

      // Create TextView 
      strings[i] = new TextView(getActivity()); 
      strings[i].setText(mMyStringsArray(i)); 
      strings[i].setId(i + 5); 
      mLinearLayout.addView(strings[i]); 



     } 


     return convertView; 
     } 


} 

回答

0

getView()爲您Adapter每個項目調用一次。因此,在您的for loop中,您的Adapter中的每件商品都會通過mMyStringArray中的每件商品。試試用position來獲得你需要的元素。像

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    // If we weren't given a view, inflate one 
    if (convertView == null) { 
     convertView = getActivity().getLayoutInflater().inflate(R.layout.my_list, null); 
    }      

    LinearLayout mLinearLayout = (LinearLayout)convertView.findViewById(R.id.my_list_linearLayout); 
    TextView[] strings = new TextView[mMyStringArray.size()]; 

     // Create TextView 
     strings[position] = new TextView(getActivity()); 
     strings[position].setText(mMyStringsArray(i)); 
     strings[position].setId(position + 5); 
     mLinearLayout.addView(strings[position]); 
    } 
    return convertView; 
    } 

類似的東西的東西應該工作。但是,由於您擁有layout,因此只需在LinearLayoutmy_list.xml內創建TextView並使用它即可輕鬆得多。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    // If we weren't given a view, inflate one 
    if (convertView == null) { 
     convertView = getActivity().getLayoutInflater().inflate(R.layout.my_list, null); 
    }      

    LinearLayout mLinearLayout = (LinearLayout)convertView.findViewById(R.id.my_list_linearLayout); 
    TextView tv = (TextView) convertView.findViewById(R.id.someID) //where someID is the id you give the TextView in your layout file 


     tv.setText(mMyStringsArray(position)); 
     tv.setId(position + 5); // Shouldn't need this now 
    } 
    return convertView; 
    } 

我也建議看The world of ListView

+0

非常感謝你。我是新來的,每天都會學習新事物。 – BallerAbdude

相關問題