添加onClickListener列出 [英] Adding onClickListener to List
问题描述
我是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屋!