我已经实现了一个 ListActivity
,并且希望为列表中每个可能的项目选择启动不同的 intent
。
例如:
单击“关于”项应启动一个包含新 Activity 的 intent
,单击“访问电话库”项应启动一个打开“电话库”的 intent
(用于选择一个图片说)。
我想了解两件事:
- 如何确定点击了哪个项目,以便启动正确的
Intent
? - 如何使列表中的项目在被选择时改变样式? (比如突出显示以便用户体验更好)
以下是MyActivity
的代码(实现ListActivity
):
public class MyActivity extends ListActivity implements OnItemClickListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.list_activity);
ListView listView = (ListView) findViewById(android.R.id.list);
listEntryClass listEntries[] = new listEntryClass[]
{
new listEntryClass( "About", "About" ),
new listEntryClass( "Access Phone Gallery", "Access Gallery and Choose an Image" )
};
listEntryArrayAdapter adapter = new listEntryArrayAdapter(this, R.layout.list_entry_layout, listEntries);
View header = (View)getLayoutInflater().inflate(R.layout.list_header_layout, null);
TextView headerValue = (TextView) header.findViewById(R.id.list_header);
headerValue.setText( this.getString(R.string.headerPrefs) );
listView.addHeaderView(header);
listView.setAdapter(adapter);
listView.setOnItemClickListener( this );
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Log.d(TAG, "Clicked an entry");
}
}
我想在某个地方被点击的项目的id
上应该有类似switch-case
的东西,但不知道如何做到这一点。
最佳答案
如何确定点击了哪个项目,以便我可以启动正确的 Intent ?
@Override
public void onItemClick(AdapterView <? > parent, View view, int position, long id) {
// Here position denotes which row index you clicked.
//If you clicked first item in ListView then row index will be zero
// and so on...
switch (position) {
case 0:
//First Item/row clicked
break;
case 1:
//Second Item/row clicked
break;
}
}
如何使列表中的项目在被选择时改变样式? (比如突出显示以便用户体验更好)
至于设置颜色,您需要一个 StateListDrawable
。您可以使用 android:listSelector
属性在列表中进行设置,在 XML 中定义可绘制对象,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:state_focused="true"
android:drawable="@drawable/item_disabled" />
<item android:state_pressed="true"
android:drawable="@drawable/item_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/item_focused" />
</selector>
ListView xml will look like below.
<ListView android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="0dip"
android:divider="@null"
android:listSelector="@drawable/list_selector"
android:layout_gravity="center" />
关于java - 从 ListActivity 条目启动 Intent - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290500/