从单选模式列表视图中获取所选项目 - android

get selected item from single selection mode listview - android

任何人请告诉我,如何从列表视图中选择我。? 我的列表视图中的单个项目行包含一个文本,后跟一个单选按钮。

代码: XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:choiceMode="singleChoice"
    />

</LinearLayout>

和activity:

public class MainActivity extends Activity {
    String[] countries = new String[] {
        "India",
        "Pakistan",
        "Sri Lanka",
        "China",
        "Bangladesh",
        "Nepal",
        "Afghanistan",
        "North Korea",
        "South Korea",
        "Japan"
    };

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

        // Getting object reference to listview of main.xml
        ListView listView = (ListView) findViewById(R.id.listview);

        // Instantiating array adapter to populate the listView
        // The layout android.R.layout.simple_list_item_single_choice creates radio button for each listview item
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,countries);

        listView.setAdapter(adapter);

    }
}

代码工作正常..
但我的问题是
1) 如何设置默认选择?
2)获取选定的项目?

1) 您可以使用 setSelection 设置默认值。例如在你的代码中,把它放在你设置适配器之后。

listView.setAdapter(adapter);
listview.setSelection(0); //default is India

2) 您可以使用 getSelectedItem() 从列表视图中获取您选择的国家/地区。例如在你的代码中如果你有保存方法 then

private void save() {
    String selectedCountry = (String) listview.getSelectedItem();
    //TODO
}

我通过这种方式得到了我想要的输出:

1) 如何设置默认选择的答案:

int defaultselected=0,idnoreid=0;
listView.setItemChecked(defaultselected, true);
listView.performItemClick(listView.getSelectedView(), defaultselected, idnoreid);

回答 2) 获取所选项目:

    @Override
    public void onItemClick(AdapterView<?> adapterView, View v, int i, long l)   
    {  
       newLabel = ((TextView)v).getText().toString();  
    }