添加onClickListener列出 [英] Adding onClickListener to List

查看:86
本文介绍了添加onClickListener列出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是pretty新Android和我有一个问题。我在玩弄一个简单的Twitter客户端的教程,在GitHub上。但我不能设法得到一个 onClickListener 正常工作。如何取回任何项目正在单击在列表中的位置?

我试着通过教程,没有运气还结合玩耍。

下面是code:
https://github.com/cacois/TweetView/blob/progress_bar/src/com/example/TweetItemAdapter.java

 包com。示例;进口的java.util.ArrayList;进口com.example.Example.Tweet;进口android.app.Activity;
进口android.content.Context;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.ArrayAdapter;
进口android.widget.ImageView;
进口android.widget.ProgressBar;
进口android.widget.TextView;公共类TweetItemAdapter扩展ArrayAdapter<&分享Tweet GT; {
    私人的ArrayList<&分享Tweet GT;鸣叫;
    私人活动活动;
    公众的ImageManager的ImageManager;    公共TweetItemAdapter(活动,INT textViewResourceId,ArrayList的<&分享Tweet GT;微博){
        超(一,textViewResourceId,鸣叫);
        this.tweets =鸣叫;
        活性=一个;        的ImageManager =
            新的ImageManager(activity.getApplicationContext());
    }    公共静态类ViewHolder {
        公共TextView的用户名;
        公共TextView的消息;
        公众形象ImageView的;
        公众进度进展情况; //添加
    }    @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
        视图V = convertView;
        ViewHolder持有人;
        如果(V == NULL){
            LayoutInflater VI =
                (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            V = vi.inflate(R.layout.listitem,NULL);
            持有人=新ViewHolder();
            holder.username =(TextView中)v.findViewById(R.id.username);
            holder.message =(TextView中)v.findViewById(R.id.message);
            holder.image =(ImageView的)v.findViewById(R.id.avatar);
            holder.progress =(进度)v.findViewById(R.id.progress_bar); //添加
            v.setTag(保持器);
        }
        其他
            支架=(ViewHolder)v.getTag();        最后唧啾= tweets.get(位置);
        如果(鸣叫!= NULL){
            holder.username.setText(tweet.username);
            holder.message.setText(tweet.message);
            holder.image.setTag(tweet.image_url);
            imageManager.displayImage(tweet.image_url,活动,holder.image,holder.progress); // CHANGED
        }
        返回伏;
    }
}


解决方案

确定想通了做什么。这里万一有人的解决方案有同样的问题:

  listView.setOnItemClickListener(新OnItemClickListener(){
    公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长的id){
        Log.v(位置,将String.valueOf(位置));
    }
});

这正好在主要活动listView.setAdapter之后

I'm pretty new to android and I've got a question. I'm playing around with a simple Twitter client tutorial which is on github. however I can't manage to get a onClickListener working properly. How can I retrieve the position of any item on the list that is being clicked on?

I've tried playing around by combining tutorials with no luck yet.

Here is the code: https://github.com/cacois/TweetView/blob/progress_bar/src/com/example/TweetItemAdapter.java

package com.example;

import java.util.ArrayList;

import com.example.Example.Tweet;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;

public class TweetItemAdapter extends ArrayAdapter<Tweet> {
    private ArrayList<Tweet> tweets;
    private Activity activity;
    public ImageManager imageManager;

    public TweetItemAdapter(Activity a, int textViewResourceId, ArrayList<Tweet> tweets) {
        super(a, textViewResourceId, tweets);
        this.tweets = tweets;
        activity = a;

        imageManager = 
            new ImageManager(activity.getApplicationContext());
    }

    public static class ViewHolder{
        public TextView username;
        public TextView message;
        public ImageView image;
        public ProgressBar progress; //ADDED
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        ViewHolder holder;
        if (v == null) {        
            LayoutInflater vi = 
                (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.listitem, null);
            holder = new ViewHolder();
            holder.username = (TextView) v.findViewById(R.id.username);
            holder.message = (TextView) v.findViewById(R.id.message);
            holder.image = (ImageView) v.findViewById(R.id.avatar);
            holder.progress = (ProgressBar) v.findViewById(R.id.progress_bar); //ADDED
            v.setTag(holder);
        }
        else
            holder=(ViewHolder)v.getTag();

        final Tweet tweet = tweets.get(position);
        if (tweet != null) {
            holder.username.setText(tweet.username);
            holder.message.setText(tweet.message);
            holder.image.setTag(tweet.image_url);
            imageManager.displayImage(tweet.image_url, activity, holder.image, holder.progress); //CHANGED
        }
        return v;
    }
}

解决方案

ok figured out what to do. here is a solution in case someone has the same problem:

listView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        Log.v("position", String.valueOf(position));
    }
});

this goes in the main activity right after listView.setAdapter

这篇关于添加onClickListener列出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆