Listview 与 Button和Text的焦点冲突问题~

来源:互联网 发布:阿里云服务器ssh登录 编辑:程序博客网 时间:2024/05/01 17:49

首先普及一下Android xml布局的三个属性:

android:descendantFocusability="afterDescendants/beforeDescendants/blocksDescendants"
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点


首先:这三个属性是和textview有关的,button的点击不需要这三个属性

其次:要改变listview的子控件textview或者button的颜色或者文字,需要在写一个接口:

public interface ListItemClickHelp {void onClick(View item, View widget, int position, int which);}
接下来直接上代码,说也麻烦其实不难,肯定都能看懂:

import java.util.ArrayList;import com.example.adapterbuttonclick.R;import com.shendu.buttonclick.ListItemClickAdapter.ViewHolder;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity implements ListItemClickHelp {private TextView mtv_show;private ListView mlv_show;private ArrayList<String> mdata = new ArrayList<String>();private ListItemClickAdapter madapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initLayout();}private void initLayout() {mdata.add("香蕉");mtv_show = (TextView) this.findViewById(R.id.tv_show);mlv_show = (ListView) this.findViewById(R.id.lv_show);madapter = new ListItemClickAdapter(this, mdata, this);mlv_show.setAdapter(madapter);mlv_show.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapter, View view,int position, long id) {mtv_show.setText(mdata.get(position));}});}@Overridepublic void onClick(View item, View widget, int position, int which) {switch (which) {case R.id.ad_btn_one:ViewHolder holder = (ViewHolder)item.getTag(); holder.mAd_btn_one.setText(mdata.get(position));break;}}}






1 0
原创粉丝点击