将数组列表中的单个字符串添加到TextView

时间:2014-03-05 22:52:29

标签: java android arrays

我的代码:以onCreate Override开头,然后底部是我的ArrayAdapter。我试图将数组中的单个字符串添加到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;
      }


}

1 个答案:

答案 0 :(得分:0)

getView()中的每个项目调用{p> Adapter一次。因此,对于for loop,您mMyStringArray中的每个项目都会Adapter中的每个项目。请尝试使用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,因此在TextView的{​​{1}}内创建LinearLayout并使用它会更容易。

my_list.xml

我还建议观看The world of ListView