【问题标题】:Adding onClickListener to specific items in ListView将 onClickListener 添加到 ListView 中的特定项目
【发布时间】:2017-01-08 17:58:03
【问题描述】:

请我尝试添加了解如何将 onItemClickListener 添加到以下代码中,以便在单击“智能手机计划”时,其活动开始等等。我在 StackOverflow 上看到了与此问题相关的其他问题,但不明白如何解决这些问题。 我已经添加了一个 onItemClickListener 但不明白如何将它设置为特定的列表项。 这是代码

package devchuks.com.rechargeit;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.app.ListActivity;

import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class EtisalatData extends AppCompatActivity {
    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_etisalat_data);

        listView = (ListView) findViewById(R.id.list);


        String[] values = new String[] {
                "Smartphone Plans",
                "Internet Bundles",
                "Weekend Plans",

        };



        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, android.R.id.text1, values);



        listView.setAdapter(adapter);


        listView.setOnItemClickListener(new OnItemClickListener() {

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


            }

        });
    }

}

【问题讨论】:

  • 你的意思是values[position],接下来做你想做的事
  • 如何让它选择特定的项目
  • 用这个values[position] 的值使用equals函数
  • 您应该接受一个答案,以便人们知道哪个答案解决了您的问题

标签: android listview


【解决方案1】:

您可以像这样定义您的listView.setOnItemClickListener 以转到不同的活动以单击不同的元素。

listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
         String item = listView.getItemAtPosition(position);
         Toast.makeText(this,"You selected : " + item,Toast.LENGTH_SHORT).show();
         if(position==0) {
            // Do your code for clicking "Smartphone Plans" example
            // startActivity(new Intent(getApplicationContext(),SmartphonePlans.class));
         }
        else if(position==1) { 
           // Do your code for clicking "Internet Bundles". example
          // startActivity(new Intent(getApplicationContext(),InternetBundles.class));
         }
        else if(position==2) { 
           // Do your code for clicking "Weekend Plans". example 
          //startActivity(new Intent(getApplicationContext(),WeekendPlans.class));*/
    }

});

【讨论】:

    【解决方案2】:

    onItemClick 将在任何列表项被点击时被调用。该位置将是适配器中视图的位置。

    请参考- How to handle the click event in Listview in android?

    谢谢 斯里拉姆

    【讨论】:

      【解决方案3】:

      试试这个:

       listView.setOnItemClickListener(new OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
              String text = values[position];
              if(text.equals("Smartphone Plans")){ //your specific list item text
                  Intent i = new Intent(MainActivity.this, AnotherActivity.class);
                  i.putExtra("TEXT", text);
                  startActivity(i);
              }
          }
      }
      

      【讨论】:

        【解决方案4】:

        如果这有帮助并且是您关心的问题 `

        listView.setOnItemClickListener(new OnItemClickListener() {
                        @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {
                         String data = values[position];
                         switch(data){
                         case "Smartphone Plans":
                         // do somwthing
                         break;
        
                        // similarly for other two values.
                         }
                    }
        
                });`
        

        【讨论】:

        • 是的,但我希望它在特定项目点击上启动一个新活动
        • so 基于被点击的项目,使用 Intent Intent i = new Intent(getApplicationContext(), NewActivity.class); startActivity(i);
        【解决方案5】:

        以下方法为您提供点击行的位置。从您的阵列中利用这一点和价值。

         @Override
           public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
              // Move your values array to member array or make it final to use
              // in Anonymous class
              final String selectedValue = values[position];
        
             Intent intent = null
            // Now add case and start activity 
            if("Smartphone Plans".equals(selectedValue)) {
              intent = new Intent(EtisalatData.this, SmartPhonePlan.class);
            }
            else if("other Plans".equals(selectedValue)){
              // other action
            }
               //... more cases and at the end start your activity if its not null
             startActivity(intent);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多