我一直在开发一个Android应用程序,我被困在中间。
问题是我使用SimpleAdapter
来执行适配器内容并在Listview
中显示项目,据我所知,我不能override
getView()
方法SimpleAdapter
类将点击侦听器绑定到项目。
还有另一种方法来处理子项的点击事件,比如使用XML,你可以像android:clickable="true"
和android:onClick="clicklistenr"
那样用XML编写,使用这个我可以得到项目,但我的问题是如果我使用这个然后我无法得到适配器的位置,我需要获得适配器项值和处理其他任务。所以我被困在这里任何帮助都会很明显。感谢。
例如,我有一个ListView
,其中包含一个image
,TextView
,如Button
,在每个项目中共享Button
。并且我无法找到使用setOnItemClickListener
点击其图像或按钮的方法。所以我需要一种方法来处理ListView
的这些子项的点击事件,我正在使用SimpleAdapter
。
答案 0 :(得分:1)
只需使用您的侦听器实现调用listView.setOnItemClickListener()
。
并使用
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
}
});
list=(ListView)findViewById(R.id.list);
和list.setAdapter(your_adapter);
详情请点击:http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/
希望它会帮助你...... :)
答案 1 :(得分:0)
您可以使用
myListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
HashMap<String, Object> obj = (HashMap<String, Object>) adapter.getItem(position);
String result= (String) obj.get("name");
Log.d("Yourtag", name);
}
});
答案 2 :(得分:0)
首先,您的问题是如何处理自定义列表视图的项目..而不是子。反正...
如果您使用的是SimpleAdapter,则可以使用getView()
。但是如果您使用的是SimpleAdapter,则无需使用getView(),因为它会处理数据到布局的映射通过资源。有关信息,请查看开发者网站中的SimpleAdapter。
另一件事是没有强制要求使用任何特定的适配器。您可以创建任何适配器类,它将扩展将实现getView()
的{{3}}。
在getView()
内,您可以将自定义布局(包含图像,按钮等等)扩展到您的视图或转换视图。如下所示:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.yourcustomlayout, null);
//Initialize your custom views here
TextView someText= (TextView) vi.findViewById(R.id.tvSometext);
Button likeButton = (Button ) vi.findViewById(R.id.btnLike);
//put data or call onclicklistener or
//whatever you want to do with custom views
likeButton .setOnClickListener(...){
//on click
}
}
Ans只是通过你的构造函数用一些数据和适当的上下文来调用它。
答案 3 :(得分:0)
Amir,
I am not sure you found the solution or not. You can do this way:
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
//for each subitem, set click listener & set tag having position as
// value.
ImageView imv = (ImageView)view.findViewById(R.id.live_view);
imv.setTag(i);
imv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("INFO","Live view clicked");
//This will give you position in listview.
int position = (int) v.getTag();
}
});
}
我希望它能帮助您和其他寻求相关答案的人。 也许还有其他解决方案,但肯定可以。