YXTS122 2017-05-10 04:12 采纳率: 100%
浏览 1816
已采纳

按钮按了有反应,可onItemClick却没执行到

图片说明
图片说明
1.按钮按了有反应,可onItemClick却没执行到
2.无论按哪个按钮,都显示"你点击的标题是:苹果"

 package com.example.exer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ListActivity  {
    private static final String TAG = "MainActivity";
    private List<Map<String, Object>> mdata;
    private int positio;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        ListView mListView=getListView();
        mdata = data();
        mListView.setAdapter(new MyAdapter(this,mdata));
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> l, View v, int position, long id) {
    Log.i(TAG, (String)mdata.get(position).get("title"));
    Toast.makeText(MainActivity.this, (String)mdata.get(position).get("title"), 1000).show();
    }
        });
    }

    class MyAdapter extends BaseAdapter{
    private Context context;
    private LayoutInflater minflater;
    private ArrayList<Map<String,Object>> datalist;
    public MyAdapter(Context context,List<Map<String,Object>> datalist) {
        this.context=context;
        this.minflater = LayoutInflater.from(context);
        this.datalist=(ArrayList<Map<String,Object>>)datalist;
    }

    @Override
    public int getCount() {
    // TODO Auto-generated method stub
    return datalist.size();
    }

    @Override
    public Object getItem(int position) {
    // TODO Auto-generated method stub
    return datalist.get(position);
    }

    @Override
    public long getItemId(int position) {
    // TODO Auto-generated method stub
        positio=position;
    return position;
    }

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

    Hodler hodler =null;    
    if(convertView == null){
    hodler = new Hodler();
    convertView = minflater.inflate(R.layout.mylist, null);
    hodler.img = (ImageView) convertView.findViewById(R.id.img);
    hodler.title = (TextView) convertView.findViewById(R.id.title);
    hodler.info = (TextView) convertView.findViewById(R.id.info);
    hodler.button = (Button) convertView.findViewById(R.id.button);
    convertView.setTag(hodler);
    }else{
    hodler = (Hodler) convertView.getTag();
    }
    hodler.img.setBackgroundResource((Integer) mdata.get(position).get("img"));
    hodler.title.setText((CharSequence) mdata.get(position).get("title"));
    hodler.info.setText((CharSequence) mdata.get(position).get("info"));
    hodler.button.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    showdialog();   
    }
    });
    return convertView;
    }
    class Hodler {
        public ImageView img;
        public TextView title;
        public TextView info;
        public Button button;
        }

    }

    public void showdialog() {
    new AlertDialog.Builder(this).setTitle("提示信息").setMessage("你点击的标题是:  " +(String)mdata.get(positio).get("title"))
    .setPositiveButton("确定", new DialogInterface.OnClickListener(){

        @Override
        public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(MainActivity.this, "确定", 1000).show();
        setResult(RESULT_OK);
        finish();
        }
     }).setNegativeButton("取消", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {

    }
    }).show();
    }


    public List<Map<String, Object>> data() {
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("title", "苹果");
    map.put("info", "apple");
    map.put("img", R.drawable.ic_launcher); 
    list.add(map);
    map = new HashMap<String, Object>();
    map.put("title", "书");
    map.put("info", "book");
    map.put("img", R.drawable.ic_launcher);
    list.add(map);
    map = new HashMap<String, Object>();
    map.put("title", "电脑");
    map.put("info", "computer");
    map.put("img", R.drawable.ic_launcher);
    list.add(map);
    map = new HashMap<String, Object>();
    map.put("title", "对话");
    map.put("info", "dialog");
    map.put("img", R.drawable.ic_launcher);
    list.add(map);
    map = new HashMap<String, Object>();
    map.put("title", "运行");
    map.put("info", "run");
    map.put("img", R.drawable.ic_launcher);
    list.add(map);
    return list;
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

  • 写回答

8条回答 默认 最新

  • Hunter-Lei 2017-05-10 04:37
    关注

    你把positio定义到哪了,建议你弹窗还是用回调,在外面实现,或者你可以给showdialog()传参showdialog(int position)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题