2016-12-05 33 views
0

我想从ListView获取对象。我把我的数据从一个csv文件。从Android的ListView获取对象

我有两列和大约100行。第一列是名字,第二列是数字。 我想要点击一行后得到数字。

所以我必须在onCreate

listView.setClickable(true); 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Button btn2 = (Button) findViewById(R.id.button3); 
     btn2.setEnabled(true); 
     Object listItem = listView.getItemAtPosition(position); 
     String item = (listView.getItemAtPosition(position).toString()); 
     btn2.setText(item); 

    } 
}); 

而在此之后,当我点击一个行(第一和第二列=得分相同),我Button文本显示[LJAVA.LANG.STRING;@42791450,每一行有其他数字。

编辑:

listView = (ListView) findViewById(R.id.list_view2); 
    itemArrayAdapter = new ItemArrayAdapter(getApplicationContext(), R.layout.single_list_item); 

    Parcelable state = listView.onSaveInstanceState(); 
    listView.setAdapter(itemArrayAdapter); 
    listView.onRestoreInstanceState(state); 

    InputStream inputStream = getResources().openRawResource(R.raw.manager_number); 
    CSVReader csv = new CSVReader(inputStream); 
    List<String[]> scoreList = csv.read(); 


    for (String[] scoreData : scoreList) { 
     itemArrayAdapter.add(scoreData); 

    } 
+0

您留下了对象的标识符而不是对象的相应编号。你需要实现一个对象,它是相应的setter和getters,并检索你想要的值。例如:btn2.setText(listView.getItemAtPosition(position).getNumber()); – Ricardo

+0

显示适配器初始化代码。 –

回答

0

如果你有办法从你的ItemArrayAdapter检索对象,例如itemArrayAdapter.get(index),你可以声明它作为一个实例属性,并使用位置索引。像这样:

public class myActivity extends Activity { 

    private ItemArrayAdapter itemArrayAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

    this.itemArrayAdapter = new ItemArrayAdapter(getApplicationContext(), R.layout.single_list_item); 

    InputStream inputStream = getResources().openRawResource(R.raw.manager_number); 
    CSVReader csv = new CSVReader(inputStream); 
    List<String[]> scoreList = csv.read(); 

    for (String[] scoreData : scoreList) { 
     itemArrayAdapter.add(scoreData); 
    }  

    ListView listView = (ListView) findViewById(R.id.list_view2); 
    listView.setClickable(true); 
    Parcelable state = listView.onSaveInstanceState(); 
    listView.setAdapter(itemArrayAdapter); 
    listView.onRestoreInstanceState(state); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     Button btn2 = (Button) findViewById(R.id.button3); 
     btn2.setEnabled(true); 
     String item = this.itemArrayAdapter.get(position);; 
     btn2.setText(item); 

    } 
    });