2017-11-17 95 views
0

我想知道是否有可能在列表视图中有可点击的项目开始一个新的活动或意图基于内容的项目而不是位置。每个特定的项目都需要具有特定的具体操作,我希望我的应用能够将项目从列表视图中的顶部或底部移动或将它们添加到新列表中。如果物品是静止的,那么将动作放在物品的位置上就可以正常工作,但由于物品会移动,所以会产生问题。因此,根据项目内容(此时的字符串)采取行动是最好的选择,因为它可以在项目所在的位置工作。基于内容而不是位置在某些项目的列表视图中开始一个新的活动或意图

目前,我使用的是if (item_position==1),if (item_position==2),如果(item_position==3)等。下面是引用的完整代码:

public class MainActivity extends AppCompatActivity { 

    ArrayList<String> selectedItems; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     selectedItems = new ArrayList<String>(); 
     ListView chl = (ListView) findViewById(R.id.colorselector); 
     chl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     String[] items = {"Blue", "Green", "Yellow", "White", "Black", "Grey"}; 
     Adapter adapter=new Adapter(this,items); 
     chl.setAdapter(adapter); 

     chl.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

       int item_position=i; 
       if (item_position==1){ 

       } 
+0

我想你可能需要有关的ListView一些更多的教程。我的博客关于listview:http://programandroidlistview.blogspot.com/。希望有所帮助! –

回答

0

试试这个代码

public class MainActivity extends AppCompatActivity { 

ArrayList<String> selectedItems; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    selectedItems = new ArrayList<String>(); 
    ListView chl = (ListView) findViewById(R.id.colorselector); 
    chl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    String[] items = {"Blue", "Green", "Yellow", "White", "Black", "Grey"}; 
    Adapter adapter=new Adapter(this,items); 
    chl.setAdapter(adapter); 

    chl.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

      if(view instance of TextView){ 
       TextView textView=(TextView)view; 
       String data=textView.getText(); 

       if(data.equal("Blue")){ 


       }else if(data.equals("Green")){ 


       } 

      } 




     }};  
+0

谢谢,但我收到错误“不兼容类型”。必需:字符串,找到:字符序列。我改变了它,但它不起作用 - 当我点击项目 – Fgf567

+0

textView.getText()。toString(); –

+0

现在它说不能解决方法“等于” – Fgf567

0

可以使用这样的检索来自适配器点击项目:

String clickedItem = adapterView.getAdapter().getItem(position); 

我假设您的适配器所持有的物品是String秒。您可能需要将项目转换为String

String clickedItem = (String) adapterView.getAdapter().getItem(position); 

或铸Adapter您的具体实现适配器:

String clickedItem = ((MyAdapter)adapterView.getAdapter()).getItem(position); 
+0

@ Fgf567看起来该项目是“CharSequence”类型。你只需要将它转换为'CharSequence'而不是'String',(例如:'CharSequence clickedItem =(CharSequence)adapterView.getAdapter()。getItem(position);') – Titus

相关问题