Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gridview侦听器不工作,但为什么?_Android_Gridview_Toast_Onitemclicklistener_Android Adapterview - Fatal编程技术网

Android Gridview侦听器不工作,但为什么?

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

我有一个基本适配器和gridview。我正在用适配器gridview填充项。当用户触摸任何物品时,我想向其敬酒。但它从未展示过

@我更新了代码,为你添加了AdapterB类。请检查

代码:

@覆盖
受保护的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"