0

私のアプリには、さまざまなアイテムを持つ ListView があります。私が抱えている問題は、特定のアイテムごとにリスナーまたはアクションを実行したいということです。現在、アイテムを押したときに私が持っているコードは、特定のアイテムではなくすべてのアイテムに適用されます。

私がやろうとしているのは、特定のアイテムが押されたときにビデオをストリーミングすることです。

これが私のコードです:

public class MainActivity extends Activity {


private ListView listView1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ViedoStream viedoStream_data[] = new ViedoStream[]
    {
        new ViedoStream(R.drawable.image0, "Mission TV"),
        new ViedoStream(R.drawable.image1, "HCBN Philippines"),
        new ViedoStream(R.drawable.image2, "Global Family Network"),
        new ViedoStream(R.drawable.image3, "2CBN"),
        new ViedoStream(R.drawable.image4, "Red ADvenir"),
        new ViedoStream(R.drawable.image5, "Alfa Television"),
        new ViedoStream(R.drawable.image6, "Light Channel Hungary"),
        new ViedoStream(R.drawable.image7, "Light Channel Rumania"),
        new ViedoStream(R.drawable.image8, "Light Channel Germany"),
        new ViedoStream(R.drawable.image9, "Terceiro Anjo"),
        new ViedoStream(R.drawable.image10, "HCBN Indonesia"),
        new ViedoStream(R.drawable.image11, "TV Famille")
    };

    ViedoStreamAdapter adapter = new ViedoStreamAdapter(this, 
            R.layout.listview_item_row, viedoStream_data);


    listView1 = (ListView)findViewById(R.id.listView1);

    View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
    listView1.addHeaderView(header);

    listView1.setAdapter(adapter);

    listView1.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView <?> parentAdapter, View view, int position,
                                long id) {

    //  Place code here with the action: RIGHT NOW I HAVE A TOAST FOR EXAMPLE ONLY

            Toast.makeText(getApplicationContext(), "TV Selected", Toast.LENGTH_SHORT).show();


        }
   });

}}

ご覧のとおり、項目が選択されると、ListView のすべての項目にトーストが適用されます。トーストは私が使用している例にすぎないことに注意してください。代わりに http ビデオをストリーミングしたい。アイテムを選択するたびに、その特定のアイテムに対してのみアクションを実行するようにするにはどうすればよいでしょうか?

私は iPhone 用のプログラミングを行っていますが、これはすべて初心者です... iPhone では、これが私のやり方です。*これは、ロジックがどのように見えるかの単なる例です:

if (item == @"TV Item" { 
  //Do Action
}

ありがとう

4

1 に答える 1

1

は設計上OnItemClickListener()すべてのListView'sアイテムに適用されます。コントロールを特定の に渡したい場合は、Widgetsそれらに個別のOnClickListener()メソッドを設定します。これは で行う必要がありますAdapter。あなたの場合、ViedoStreamAdapter.

これを例として考えてみましょう。私のアプリではOnItemClickListener()、別のアクティビティでツイートの詳細を表示するために を使用しています。それはうまくいきます。しかし、ユーザーがImageView同じアイテムをクリックすると、その Twitter プロフィールを表示する必要があります。そのため、Activityでは を使用OnItemClickListener()し、アダプタでは をオーバーライドしますImageView's OnClickListener()。このような:

更新されたコード:

holder.imgvwProfilePicture.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        Intent profileIntent = new Intent(activity, ProfileContainer.class);
        profileIntent.putExtra("userId", arrTweets.get(position).getAuthorID());
        profileIntent.putExtra("userScreenName", arrTweets.get(position).getScreenName());
        activity.startActivity(profileIntent);

    }
});

この場合、私はArrayAdapter<TimeLineData> arrTweets. AndTimeLineDataは、setter and getter個々の値用の POJO クラスです。

が不要な場合はOnItemClickListener()、自由に削除してください。OnClickListener()で設定した には影響しませんAdapter

ImageViewクリックされると、これを使用して現在位置のデータを引き出します: arrTweets.get(position).getAuthorID(). そしてpositionは の にあるものgetView()ですAdapter

これについてさらに質問があるかどうか尋ねてください。

注:これはViewgetView(). たとえば、上記のコードは、私のアプリでこれの前に呼び出されます。

return vi;

更新 2:

コメントでOPが指摘したように、これは彼のために働いたものです:

if(position == 0){
    ....
}
于 2013-04-29T06:21:58.490 に答える