2012-01-03 65 views
1

我需要在列表视图中显示我的数据列表数据。我的数据列表是public static ArrayList<ArrayList<String>> ourstringList1。在我的listadapter类我试图从arraylist中获取数据并将其设置为tesxtview。但因为我需要arr.get(i).get(j)..。我无法继续前进。 请帮我对此...如何将arraylist值设置为android中的listview?

我的代码: 公共类testreview延伸活动{

private ListView listViewScore = null; 
private ListViewAdapter listViewAdapter = null; 
public static ArrayList<ArrayList<String>> ourstringList1 = Select.stringList1; 
    private ArrayList<ArrayList<String>> usernameArrLst = ourstringList1; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list); 
    listViewScore=(ListView)findViewById(R.id.list); 
    usernameArrLst = new ArrayList<ArrayList<String>>(); 
    listViewAdapter = new ListViewAdapter(); 
    listViewScore.setAdapter(listViewAdapter); 
} 

class ListViewAdapter extends BaseAdapter{ 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     if(usernameArrLst==null){ 
      return 0; 
     } 

     return usernameArrLst.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return usernameArrLst.get(position); 
    } 

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

    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View rowView=view; 
     if(rowView==null){ 
      LayoutInflater layoutinflate =LayoutInflater.from(testreview.this); 
      rowView=layoutinflate.inflate(R.layout.listrow, parent, false); 
     } 

     TextView textViewName=(TextView)rowView.findViewById(R.id.tv_case); 
     textViewName.setText((CharSequence) usernameArrLst.get(position)); 

     return rowView; 
    } 

} 

}

在此先感谢

+0

重新使用节标题? – 2012-01-03 09:57:29

+0

描述你希望数据显示在你的列表视图中,因为你基本上有一个数据网格,你可以在一个列表中显示所有的值,让每个ArrayList位于列表的单独标题/部分之下......等等 – 2012-01-03 09:59:51

+0

嗨我正在测验应用程序。在我的数据列表中,数据存储为行和列。所以我需要获得第1行第1列,然后我必须将其设置为在listview中的textview。我怎样才能做到这一点? – RaagaSudha 2012-01-03 10:09:33

回答

0

为此,我认为你需要编写您的自定义适配器并将其设置为列表
Get The Idea

希望这会帮助你。

+0

ListAdapter adapter = new ArrayAdapter >>(this,android.R.layout.simple_list_item_1,ourstringList1);我已经给出了这样的,但它没有采取3个参数... – RaagaSudha 2012-01-03 12:36:53

0

糖果如果u我们展示你已经尝试了什么,那么它应该已经better.But按我的理解,我们的代码看起来应该是这样:

public class TestProjeectActivity extends Activity { 

    private ListView listViewScore = null; 
    private ListViewAdapter listViewAdapter = null; 
    private String[] usernameArr = null; 

     private ArrayList<String> usernameArrLst = null; 

    //private Helper helper = null; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     listViewScore=(ListView)findViewById(R.id.listViewScore); 

     //helper = new Helper(TestProjeectActivity.this); 
     //usernameArr = helper.getUserName(); 


     usernameArr = new String[]{"Alan","Bob"}; 

     usernameArrLst = new ArrayList<String>(Arrays.asList(usernameArr));//Changed line 


     listViewAdapter = new ListViewAdapter(); 
     listViewScore.setAdapter(listViewAdapter); 
    } 

    class ListViewAdapter extends BaseAdapter{ 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      if(usernameArrLst==null){ 
       return 0; 
      } 

      return usernameArr.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return usernameArrLst.get(position); 
     } 

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

     @Override 
     public View getView(int position, View view, ViewGroup parent) { 
      // TODO Auto-generated method stub 
      View rowView=view; 

      if(rowView==null){ 
       LayoutInflater layoutinflate =LayoutInflater.from(TestProjeectActivity.this); 
       rowView=layoutinflate.inflate(R.layout.listviewtext, parent, false); 
      } 

      TextView textViewName=(TextView)rowView.findViewById(R.id.textViewName); 



      textViewName.setText(usernameArr.get(position)); 

      return rowView; 
     } 

    } 
} 
+0

嗨感谢您的回应..我得到listViewScore.setAdapter(listViewAdapter)附近的错误; ...你能告诉我为什么它显示异常接近line..do我们需要创建setadapter类? – RaagaSudha 2012-01-04 07:32:20

+0

@Sweety你可以让我知道什么是异常....不,我们不需要创建setAdapter类 – Maverick 2012-01-04 08:11:43

+0

@Sweety我编辑了代码请尝试并让我知道 – Maverick 2012-01-04 08:20:51

0

对不起,没看到你有鳞片状的ArrayList。为了获得你需要的元素,使用类转换来到达内部的ArrayList并迭代它们。

ArrayList<ArrayList<String>> stringList; 

stringList = ourStringList1; 

for (int i = 0; i < stringList.size(); i++) { 
    ArrayList<String> innerStringList = (ArrayList<String>) stringList.get(i); 

    for (int j = 0; j < innerStringList.size(); j++) { 
     String value = (String) innerStringList.get(j); 

     // put the value in the textView 
    } 
} 

当你建立你的适配器类,创建一个类的属性,将持有的ArrayList阵列和在构造函数初始化。

希望这会有所帮助。如果你需要进一步的解释让我知道。

相关问题