【问题标题】:how to get position of clicked item in OnClickListener of Listview?如何在 Listview 的 OnClickListener 中获取单击项目的位置?
【发布时间】:2011-05-09 08:45:04
【问题描述】:

我想在列表视图的单击列表中获取选定的列表视图项。

现在我已经实现了onItemClickListener,但是当我点击一个项目文本时,它就会被提升。我想在列表视图行单击时将其提升。

知道如何实现这一目标吗?获取列表onClick监听器的文本值?

lv1.setOnItemClickListener(new OnItemClickListener() {

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

                String value = lv1.getAdapter().getItem(position).toString();
                //display value here 
                
                }
              });

【问题讨论】:

  • 您可以使用lv1.getSelectedItemPosition()lv1.getSelectedItem()

标签: android listview


【解决方案1】:

尝试使用此代码。

lv1.setOnItemClickListener(new OnItemClickListener() {     ![enter image description here][2]
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          String value = lv1.getItemAtPosition(position).toString();
               //display value here 
         }
});

【讨论】:

  • 不,你永远不会理解我使用此功能获得价值的问题我想使用 listview 的 onClick 侦听器来实现此功能
  • 尝试设置标签。 lv1.setTag(position) 并进入 onClick view.getTag()
【解决方案2】:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    int pos = parent.getPositionForView(view);
    Toast.makeText(this,pos + "",Toast.LENGTH_SHORT).show();
}

【讨论】:

  • 您好,欢迎来到 Stack Overflow。除非他们解释了他们的工作,否则只有代码的答案通常不是很有用。这对于长代码段来说是非常正确的。请考虑添加对您更改或编写的内容的说明。
【解决方案3】:

如果您的 ListView 项目是使用 ArrayAdapter(希望如此)从数组 words 填充并使用具有这种构造函数的类 Word 实现的:

public class Word {
    private String mValueA;
    /** Image resource ID for the word */
    private int mAudioResourceId;

    /*
    * Create a new Word object.
    */

    public Word(String valueA, int audioResourceId) {
        mValueA = valueA;
        mAudioResourceId = audioResourceId;
    }

   /*
    * Get the default translation of the word
     */
    public String getValueA() {
        return mValueA;
    }

    /**
     * Return the audio resource ID of the word.
     **/

    public int getAudioResourceId() {
        return mAudioResourceId;
    }    
}

然后您可以设置 setOnItemClickListener 以访问单击的项目,例如播放此列表项的数组中定义的音频。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
        //like this:
        Word word = words.get(position);
        //and use this position to play the audio from the array
        //corresponding to its item
        mMediaPlayer = MediaPlayer.create(SomeActivity.this, word.getAudioResourceId());
        mMediaPlayer.start();
    }
});

【讨论】:

    【解决方案4】:
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        int pos = (int) adapterView.getPositionForView(view);
        Toast.makeText(MainActivity.this, pos, Toast.LENGTH_SHORT).show();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 2013-09-28
      • 1970-01-01
      • 2023-03-21
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多