Android Gridview侦听器不工作,但为什么?
我有一个基本适配器和gridview。我正在用适配器gridview填充项。当用户触摸任何物品时,我想向其敬酒。但它从未展示过 @我更新了代码,为你添加了AdapterB类。请检查 代码:Android Gridview侦听器不工作,但为什么?,android,gridview,toast,onitemclicklistener,android-adapterview,Android,Gridview,Toast,Onitemclicklistener,Android Adapterview,我有一个基本适配器和gridview。我正在用适配器gridview填充项。当用户触摸任何物品时,我想向其敬酒。但它从未展示过 @我更新了代码,为你添加了AdapterB类。请检查 代码: @覆盖 受保护的void onPostExecute(最终布尔值成功) { 最终适配器B ada=新适配器B(上下文、壁纸列表); setAdapter(ada); if(progressDialog.isShowing()) { progressDialog.disclose(); } setOnItemC
@覆盖
受保护的void onPostExecute(最终布尔值成功)
{
最终适配器B ada=新适配器B(上下文、壁纸列表);
setAdapter(ada);
if(progressDialog.isShowing())
{
progressDialog.disclose();
}
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父项、视图、整型位置、长标识){
Toast.makeText(context,ada.getItem(position).get(POST_ID),LENGTH_LONG.show();
}
});
}
适配器B类:
public class AdapterB extends BaseAdapter {
private Context mContext;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;
public AdapterB(Context c,ArrayList<HashMap<String,String>> d) {
// TODO Auto-generated constructor stub
mContext = c;
data = d;
inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(mContext,true);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
public HashMap<String, String> getItem(int position) {
HashMap<String, String> tar;
tar = data.get(position);
return tar;
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View grid;
if (convertView == null) {
grid = new View(mContext);
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = inflater.inflate(R.layout.mygrid, parent, false);
} else {
grid = (View) convertView;
}
ImageView imageView = (ImageView) grid.findViewById(R.id.imagepart);
HashMap<String,String> tar;
tar = data.get(position);
imageLoader.DisplayImage(tar.get(FragmentB.FOTOYOL),imageView);
/*
grid.setId(Integer.parseInt(tar.get(FragmentB.POST_ID)));
grid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,"Clicked "+position,Toast.LENGTH_LONG).show();
}
});*/
return grid;
}
}
公共类适配器B扩展BaseAdapter{
私有上下文;
私有数组列表数据;
专用静态充气机=空;
公共图像加载器;
公共适配器B(上下文c,数组列表d){
//TODO自动生成的构造函数存根
mContext=c;
数据=d;
充气器=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
imageLoader=新的imageLoader(mContext,true);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回data.size();
}
公共HashMap getItem(int位置){
哈希映射焦油;
tar=data.get(位置);
返回焦油;
}
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图网格;
if(convertView==null){
网格=新视图(mContext);
LayoutInflater充气器=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u充气器\u服务);
网格=充气机。充气(R.layout.mygrid,父项,false);
}否则{
网格=(视图)转换视图;
}
ImageView ImageView=(ImageView)grid.findViewById(R.id.imagepart);
哈希映射焦油;
tar=data.get(位置);
imageLoader.DisplayImage(tar.get(FragmentB.FOTOYOL)、imageView);
/*
setId(Integer.parseInt(tar.get(FragmentB.POST_ID));
grid.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(mContext,“单击”+位置,Toast.LENGTH_LONG.show();
}
});*/
返回网格;
}
}
布局Xml:
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:descendantFocusability="blocksDescendants" />
我找到了一个解决方案
我的填充项有一个复选框。我给它一个这样的属性
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
这就是工作!但是我现在不知道我现在怎么才能勾选方框。。如果我发现了,我将在这里更新。不要将侦听器放在网格上,而是放在您插入的项目上请编辑您的问题,将
AdapterB
中使用的布局的xml代码和AdapterB
getView
方法的代码包括在内。要确保这是听众的问题,请尝试在Toast中加入一些固定字符串(“Hello World”
)。如果字符串长度为零或为null,则Toast可能不会显示。genderantfocusability不是解决方案,我在Toast中写入固定字符串,但不起作用。我需要帮助。如果你能给我一个示例代码@皮特,我会在几个小时后更新代码。。
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"