listview Item 中 有多个要点击的地方:该怎么处理

本文介绍了一个针对NBA赛事信息展示的Android适配器实现案例,通过自定义接口和适配器来处理赛事数据,并实现了特定项的点击监听功能。

1.一个接口:

//重点
public interface ListItemClickHelp {

    void onClick(View item, View widget, int position, int which);
}

2.适配器:

package mstart.yeketech.com.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.List;

import mstart.yeketech.com.tools.BeanNba;
import mstart.yeketech.com.tools.ListItemClickHelp;
import mstart.yeketech.com.yeke.R;


public class MyNbaAdapter extends BaseAdapter {
    private List<BeanNba> list;
    private LayoutInflater inflater;
    private Context context;
    //private TextView duration_texts;
    private ListItemClickHelp callback;
    public MyNbaAdapter(Context context, List<BeanNba> list,ListItemClickHelp callback) {
        inflater = LayoutInflater.from(context);
        this.context = context;
        this.list = list;
        this.callback=callback;
    }


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

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

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




    @Override
    public View getView(int position, View convertView, final ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHoldernba holder;

        if (convertView == null) {
            holder = new ViewHoldernba();
            convertView = inflater.inflate(R.layout.nbaitem, null);
            holder.player1 = (TextView) convertView
                    .findViewById(R.id.nba_player1);
            holder.player2 = (TextView) convertView
                    .findViewById(R.id.nba_player2);
            holder.player1logo = (ImageView) convertView
                    .findViewById(R.id.nba_player1logo);
            holder.player2logo = (ImageView) convertView
                    .findViewById(R.id.nba_player2logo);
            holder.m_time = (TextView) convertView
                    .findViewById(R.id.nba_mtime);
            holder.score = (TextView) convertView
                    .findViewById(R.id.nba_score);
            holder.link1url = (TextView) convertView
                    .findViewById(R.id.nba_link1url);
            holder.link2url = (TextView) convertView
                    .findViewById(R.id.nba_link2url);

            convertView.setTag(holder);
        } else {
            holder = (ViewHoldernba) convertView.getTag();
        }
        holder.player1.setText("主队:"+list.get(position).getPlayer1().toString());
        holder.player2.setText("客队:"+list.get(position).getPlayer2().toString());
        holder.m_time.setText("比赛时间:"+list.get(position).getM_time().toString());
        holder.score.setText("比分:"+list.get(position).getScore().toString());
        holder.link1url.setText("视频集锦:"+list.get(position).getLink1url().toString());
        holder.link2url.setText("数据统计:"+list.get(position).getLink2url().toString());
        Picasso.with(context).load(list.get(position).getPlayer1logo().toString()).placeholder(R.mipmap.news).error(R.mipmap.news).into(holder.player1logo);
        Picasso.with(context).load(list.get(position).getPlayer2logo().toString()).placeholder(R.mipmap.news).error(R.mipmap.news).into(holder.player2logo);
//重点:
        final View view = convertView;
        final int p = position;
        final int one = holder.link1url.getId();
        holder.link1url.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callback.onClick(view, parent, p, one);
            }
        });
        final int two = holder.link2url.getId();
        holder.link2url.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callback.onClick(view, parent, p, two);
            }
        });
        return convertView;
    }
}

class ViewHoldernba {
    TextView player1, player2,m_time,score,link1url,link2url;
    ImageView player1logo, player2logo;

}

 

3.主函数:

public class NbaActivity extends AutoLayoutActivity implements ListItemClickHelp{
private ImageView back;
    private EditText put;
    private Button check;
    private TextView title;


    AbHttpUtil abHttpUtil = null;
    private AbPullToRefreshView mAbPullToRefreshView = null;
    private MyNbaAdapter myadapter;
    private ArrayList<BeanNba> mlist = new ArrayList<BeanNba>();
    private BeanNba bean;
    private ListView mlistView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nba);
        back = (ImageView) findViewById(R.id.nba_back);
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                NbaActivity.this.finish();
            }
        });
        mlistView= (ListView) findViewById(R.id.nba_listview);
        myadapter = new MyNbaAdapter(NbaActivity.this, mlist,NbaActivity.this);
        mlistView.setAdapter(myadapter);
//这个必不可少:
      mlistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(NbaActivity.this,"123",Toast.LENGTH_SHORT).show();
          }
      });


        put= (EditText) findViewById(R.id.nba_put);
        check= (Button) findViewById(R.id.nba_check);
        check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getdata();
            }
        });


        title= (TextView) findViewById(R.id.nba_saijiname);
    }
//加载网络数据的:
    public void getdata() {
        

    }

//这里是重点:两个地方要点击(视频集锦:和数据统计:)。不是整个点击()
    @Override
    public void onClick(View item, View widget, int position, int which) {
        switch (which) {
            case R.id.nba_link1url:
                Intent intent = new Intent(NbaActivity.this, WebActivity.class);
                Bundle bundle=new Bundle();
                String url =mlist.get(position).getLink1url();
                Log.e("+++url",url);
                bundle.putString("weburl",url);
                intent.putExtras(bundle);
                startActivity(intent);
                break;
            case R.id.nba_link2url:
                Intent intent2 = new Intent(NbaActivity.this, WebActivity.class);
                Bundle bundle2=new Bundle();
                String url2 =mlist.get(position).getLink2url();
                bundle2.putString("weburl",url2);
                intent2.putExtras(bundle2);
                startActivity(intent2);
                break;
            default:
                break;
        }
    }
}

 

转载于:https://my.oschina.net/MStart/blog/699489

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值