Java 如何使用多维数组从listview获取值?

Java 如何使用多维数组从listview获取值?,java,android,user-interface,android-listview,Java,Android,User Interface,Android Listview,因此,我的listview有一个多维数组,它的构造如下: String[][] listControls = { {"Shutdown Host","10"}, {"Close Connection","1"}}; ArrayAdapter adapter = new ArrayAdapter<String>(this,R.layout.layout_listview); for(int i = 0;

因此,我的listview有一个多维数组,它的构造如下:

    String[][] listControls = {
            {"Shutdown Host","10"},
            {"Close Connection","1"}};
    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);
假设第一个字符串是我想在列表视图中显示的文本,另一个是通过套接字发送的id/消息(假设它是一个秘密值)

我对适配器进行了如下编码:

    String[][] listControls = {
            {"Shutdown Host","10"},
            {"Close Connection","1"}};
    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);
ArrayAdapter adapter=新的ArrayAdapter(this,R.layout.layout_listview);
for(int i=0;i
我构建了一个项目的点击监听器:

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( ... );


            }
        });
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Object obj=listView.getItemAtPosition(位置);
//我应该在这里添加什么?从数组中获取特定值?
//整数cmdId=Integer.parseInt(…);
}
});
我想从click listener中获取其他值,例如,如果我在列表视图中单击了“Close Connection”,我想从中获取“1”值并将其放入变量中。 提前感谢您的帮助。

您所能做的是

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  String value = listControls[position][1] 
            }
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串值=列表控件[位置][1]
}
当然,这只有在您有权访问ListControl时才起作用。如果没有,我会选择创建一个对象SomethingWithCode(字符串文本,Int代码)[或者只是在kotlin中配对]并创建一个自定义适配器

希望这有帮助

另外,如果您总是只传递两个值(请参阅带有字符串和int参数的对象),那么您可能不需要多维数组。

您可以做的是

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  String value = listControls[position][1] 
            }
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串值=列表控件[位置][1]
}
当然,这只有在您有权访问ListControl时才起作用。如果没有,我会选择创建一个对象SomethingWithCode(字符串文本,Int代码)[或者只是在kotlin中配对]并创建一个自定义适配器

希望这有帮助


此外,如果总是只传递两个值(请参阅带有字符串和int参数的对象),则可能不需要多维数组来实现它。

为您的情况编写自定义适配器。使用HashMap,它总是更好

HashMap<String, Integer> map = new LinkedHashMap<>();
map.add("Shut Down Host", 0);
map.add("Close connection", 1);
HashMap=newlinkedhashmap();
map.add(“关闭主机”,0);
地图。添加(“紧密连接”,1);
最重要的是使用RecyclerView


RecyclerView教程

为您的案例编写自定义适配器。使用HashMap,它总是更好

HashMap<String, Integer> map = new LinkedHashMap<>();
map.add("Shut Down Host", 0);
map.add("Close connection", 1);
HashMap=newlinkedhashmap();
map.add(“关闭主机”,0);
地图。添加(“紧密连接”,1);
最重要的是使用RecyclerView


RecyclerView教程

HashMap这是一个很好的方法,比多维数组更好,但仍然是一个用于此选项的类和对象更好。我创建了自定义适配器并使用HashMap。但是,如何调用该方法并在click listener using位置中返回hashmap值呢?谢谢你,是我自己找到的。谢谢你的帮助;)HashMap这是一个很好的方法,比多维数组更好,但是对于这个选项,类和对象还是更好的。但是,如何调用该方法并在click listener using位置中返回hashmap值呢?谢谢你,是我自己找到的。谢谢你的帮助;)