0

を実装しましたが、リスト内の項目の可能な選択ごとListActivityに異なる を起動したいと考えています。intent

例えば:

ここに画像の説明を入力

[About] アイテムをクリックするintentと、新しいアクティビティが起動し、[Access Phone Gallery] アイテムをクリックすると、電話ギャラリーがintent開きます (たとえば、画像を選択するため)。

次の 2 つのことを理解したいと思います。

  1. どの項目がクリックされたかを特定して、正しいintent.
  2. リスト内のアイテムが選択されたときにスタイルを変更するにはどうすればよいですか? (ユーザーエクスペリエンスが向上するように強調表示されるとします)

以下は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");
    }

}

switch-caseクリックしたアイテムのどこかに のようなものがあるはずですがid、どうすればいいのかわかりません。

4

2 に答える 2

1
 @Override
 public void onItemClick(AdapterView <? > parent, View view, int position, long id)
 {
     if (postion == 0) {
         startActivity(MyActivity.this, FirstActivity.class);
     } else if (possion == 1) {
         startActivity(MyActivity.this, SecondActivity.class);
     } else {
         startActivity(MyActivity.this, ThirdActivity.class);
     }
 }
于 2012-07-02T08:57:23.557 に答える
1

正しいインテントを起動できるように、クリックされたアイテムを特定するにはどうすればよいですか?

   @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 は次のようになります。

<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" />
于 2012-07-02T08:58:56.867 に答える