如何使用多维数组从列表视图中获取值?
How to get a value from listview with multidimensional array?
所以我的列表视图有一个多维数组,它的构造如下:
String[][] listControls = {
{"Shutdown Host","10"},
{"Close Connection","1"}};
假设第一个字符串是我想在列表视图中显示的文本,另一个是 id/message 通过套接字发送(假设它是一个秘密值)。
我这样编写适配器:
ArrayAdapter adapter = new ArrayAdapter<String>(this,R.layout.layout_listview);
for(int i = 0; i < listControls.length; i++) {
adapter.add(listControls[i][0]);
}
listView = (ListView) findViewById(R.id.controls_listView);
listView.setAdapter(adapter);
listView.setClickable(true);
并且我构建了一个item的点击监听器:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Object obj = listView.getItemAtPosition(position);
//What should I add here? to get specific value from the array?
//Integer cmdId = Integer.parseInt( ... );
}
});
我想从点击侦听器中获取另一个值,例如如果我在列表视图中单击 "Close Connection",我想从中获取“1”值并将其放入变量中。
在此先感谢您的帮助。
你能做的是
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String value = listControls[position][1]
}
这当然只有在您有权访问 listControls 时才有效。如果没有,我会选择创建一个对象 SomethingWithCode(String text, Int code)[或者只是在 kotlin 中配对] 并创建一个自定义适配器。
希望对您有所帮助!
此外,如果您总是只传递两个值(请参阅带有字符串和整数参数的对象),您可能不需要多维数组
为您的情况编写自定义适配器。使用总是更好的 HashMap。
HashMap<String, Integer> map = new LinkedHashMap<>();
map.add("Shut Down Host", 0);
map.add("Close connection", 1);
最重要的是使用 RecyclerView。
RecyclerView 教程https://developer.android.com/guide/topics/ui/layout/recyclerview
所以我的列表视图有一个多维数组,它的构造如下:
String[][] listControls = {
{"Shutdown Host","10"},
{"Close Connection","1"}};
假设第一个字符串是我想在列表视图中显示的文本,另一个是 id/message 通过套接字发送(假设它是一个秘密值)。
我这样编写适配器:
ArrayAdapter adapter = new ArrayAdapter<String>(this,R.layout.layout_listview);
for(int i = 0; i < listControls.length; i++) {
adapter.add(listControls[i][0]);
}
listView = (ListView) findViewById(R.id.controls_listView);
listView.setAdapter(adapter);
listView.setClickable(true);
并且我构建了一个item的点击监听器:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Object obj = listView.getItemAtPosition(position);
//What should I add here? to get specific value from the array?
//Integer cmdId = Integer.parseInt( ... );
}
});
我想从点击侦听器中获取另一个值,例如如果我在列表视图中单击 "Close Connection",我想从中获取“1”值并将其放入变量中。 在此先感谢您的帮助。
你能做的是
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String value = listControls[position][1]
}
这当然只有在您有权访问 listControls 时才有效。如果没有,我会选择创建一个对象 SomethingWithCode(String text, Int code)[或者只是在 kotlin 中配对] 并创建一个自定义适配器。
希望对您有所帮助!
此外,如果您总是只传递两个值(请参阅带有字符串和整数参数的对象),您可能不需要多维数组
为您的情况编写自定义适配器。使用总是更好的 HashMap。
HashMap<String, Integer> map = new LinkedHashMap<>();
map.add("Shut Down Host", 0);
map.add("Close connection", 1);
最重要的是使用 RecyclerView。
RecyclerView 教程https://developer.android.com/guide/topics/ui/layout/recyclerview