Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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
Java ImageButton单击侦听器不工作_Java_Android - Fatal编程技术网

Java ImageButton单击侦听器不工作

Java ImageButton单击侦听器不工作,java,android,Java,Android,我有我的自定义适配器,因为我有一个ImageButton,我想设置onClickListener 问题是,当我单击位置0中的元素时,它返回位置3中的元素;我不明白为什么 这是自定义适配器: public class CustomAdapter extends BaseAdapter { private final Activity context; private LayoutInflater mInflater; private ArrayList<H

我有我的自定义适配器,因为我有一个
ImageButton
,我想设置
onClickListener

问题是,当我单击位置0中的元素时,它返回位置3中的元素;我不明白为什么

这是自定义适配器:

   public class CustomAdapter extends BaseAdapter  {


    private final Activity context;
    private LayoutInflater mInflater;
    private ArrayList<HashMap<String, Object>> mlist;
    private String mNome;
    private String mCognome;
    private String mTitolo;
    private String mInfo;
    ViewHolder viewHolder;
    View view;
    ArrayList<Integer> map = new ArrayList<>();
    HashMap<String, Object> e;

    public CustomAdapter(Activity context,ArrayList<HashMap<String, Object>> mlist){

        this.context = context;
        this.mlist=mlist;
        mInflater = context.getLayoutInflater();

    }



    public class ViewHolder {

        public ImageButton mImageButton;
        public TextView mTitleView;
        public TextView mNomeView;
        public TextView mCognomeView;
        public TextView mInfoView;



    }


    @Override
    public int getCount() {
        return mlist.size();
    }

    @Override
    public Object getItem(int position) {
        Log.d("POSITION GET",Integer.toString(position));

        if (mlist != null && position >= 0 && position < getCount()) {
            Log.d("POSITION GET",Integer.toString(position));
            return mlist.get(position);
        }
        return null;
    }

    @Override
    public long getItemId(int position) {


        if (mlist != null && position >= 0 && position < getCount()) {
            return Integer.parseInt((String)mlist.get(position).get("id"));
        }
        return position;
    }

    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        view = convertView;
        e = (HashMap<String, Object>) getItem(position);

        if (view == null) {

            view = mInflater.inflate(R.layout.item_list_avvisi, parent, false);
            viewHolder = new ViewHolder();

            viewHolder.mImageButton = (ImageButton) view.findViewById(R.id.imageButton);
            viewHolder.mCognomeView = (TextView) view.findViewById(R.id.cognome);
            viewHolder.mNomeView = (TextView) view.findViewById(R.id.nome);
            viewHolder.mTitleView = (TextView) view.findViewById(R.id.titolo);
            viewHolder.mInfoView = (TextView) view.findViewById(R.id.info);

            viewHolder.mImageButton.setClickable(true);






            view.setTag(viewHolder);

        } else {
            viewHolder = (ViewHolder) view.getTag();
        }

        viewHolder.mImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                String nome = e.get("Nome").toString();

                Log.d("TAG", nome);

                Intent shareIntent = new Intent();
                shareIntent.setAction(Intent.ACTION_SEND);
                shareIntent.putExtra(Intent.EXTRA_TEXT, (String) "Avviso Scuola: " + nome + " " +
                                mCognome + "\n" +
                                mTitolo + "\n" +
                                mInfo
                );
                shareIntent.setType("text/plain");
                context.startActivity(shareIntent);


            }
        });


        viewHolder.mCognomeView.setText(e.get("Cognome").toString());
        viewHolder.mNomeView.setText(e.get("Nome").toString());
        viewHolder.mTitleView.setText(e.get("Titolo").toString());
        viewHolder.mInfoView.setText(e.get("Info").toString());



        return view;
    }
公共类CustomAdapter扩展了BaseAdapter{
私人最终活动背景;
私人停车场;
私有数组列表;
私有字符串mNome;
私有字符串mCognome;
私有字符串mTitolo;
私有字符串mInfo;
持票人持票人;
视图;
ArrayList映射=新的ArrayList();
哈希映射;
公共CustomAdapter(活动上下文,ArrayList mlist){
this.context=上下文;
this.mlist=mlist;
mInflater=context.getLayoutFlater();
}
公共类视图持有者{
公共图像按钮;
公共文本视图mTitleView;
公共文本视图mNomeView;
公共文本视图mCognomeView;
公共文本视图mInfoView;
}
@凌驾
public int getCount(){
返回mlist.size();
}
@凌驾
公共对象getItem(int位置){
Log.d(“位置获取”,Integer.toString(位置));
如果(mlist!=null&&position>=0&&position=0&&position
在片段中我有:

private ArrayList<HashMap<String, Object>> mlist = new ArrayList<HashMap<String, Object>>();

    ...

for (int i = 1; i < array.length(); i++) {
                    HashMap<String, Object> map = new HashMap<String, Object>();

                    Gson gson = new Gson();


                    Avv mAvv = gson.fromJson(String.valueOf(array.getJSONObject(i)), Avv.class);

                    map.put("id", String.valueOf(i));
                    map.put("Name", mAvv.getNome());
                    map.put("Surname", mAvv.getCognome());
                    map.put("Title", mAvv.getTitolo());
                    map.put("Info",  mAvv.getTesto());


                    mlist.add(map);
                }

...


     CustomAdapter mAdapter = new CustomAdapter(getActivity(),mlist);
     list.setAdapter(mAdapter);
private ArrayList mlist=new ArrayList();
...
对于(int i=1;i
您正在使用从回收的视图中使用的数据。永远不要这样做。而是从ArrayList中获取数据

mlist.get(postion)....
您必须将
final
声明添加到该位置,以便在
onClick
方法中可以访问该声明


public View getView(final int position,View convertView,ViewGroup parent)
{

您可以,但必须将位置设置为final.getView(final int positionHi,问题是位置(我尝试了Log.d(“position”,Integer.toString(position));仅为0-1-2或3..之后返回0,但列表中的元素为4..因此其他元素被删除..您能帮忙吗?)ListView正在循环视图,您将看到当前正在绘制的视图的位置。阅读此嗨,我阅读了,但目前我找不到解决方案..我更新我的问题
mlist.get(postion)....