我有自定义的listview
包含一些Textviews
。我将列表视图设置为adapter
,如下所示:
BestandTypAdapter bestandTypAdapter = new BestandTypAdapter(getActivity(), R.layout.bestand_type_liste, dataList);
li.setAdapter(bestandTypAdapter);
并且如下所示,在bestand_type_liste布局的代码中,TextView是可点击的
bestand_type_liste :
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/layout_depots_typ"
android:padding="5dip" >
<TableRow
android:paddingRight="10dip"
android:paddingLeft="10dip"
>
<TextView
android:id="@+id/BESTAND_TYP_NAME"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="0.50"
android:clickable="true"/> <<=================
在getView()
adapter
方法中,我使用onClickListener
与名称TexView
相关联,以便在点击名称时,其位置会显示在logCat
上1}}如下:
holder.name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("", "position_ : " + pos);
}
});
问题是,当我点击listview
项时没有出现,如何解决这个问题
答案 0 :(得分:1)
尝试为TextView添加此属性:
android:focusable="false"
答案 1 :(得分:0)
数组适配器的示例,这是主要活动。
public class ListViewMain extends AppCompatActivity {
private ArrayList<BrandModel> alBrand;
private ListView list;
private CustomAdapter custAdapter;
private AdapterView.OnItemClickListener messageClickedHandler;
private View vHeader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
setupDefaults();
setupEvents();
}
public void init() {
//list view
list = (ListView) findViewById(R.id.listView);
//Array list
alBrand = new ArrayList<>();
//Custom Adapter
custAdapter = new CustomAdapter(this, R.layout.textlistview, alBrand);
//View
vHeader = getLayoutInflater().inflate(R.layout.listviewheader, null, false);
}
public void setupDefaults() {
addBrandAndAdapter();
}
public void addBrandAndAdapter() {
alBrand.add(new BrandModel(getResources().getString(R.string.And), R.drawable.android));
alBrand.add(new BrandModel(getResources().getString(R.string.Mac), R.drawable.apple));
alBrand.add(new BrandModel(getResources().getString(R.string.Tizen), R.drawable.insta));
alBrand.add(new BrandModel(getResources().getString(R.string.window), R.drawable.windows));
list.addHeaderView(vHeader);
list.setAdapter(custAdapter);
}
public void setupEvents() {
messageClickedHandler = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "Click ListItem Number " + position, Toast.LENGTH_LONG).show();
System.out.println("Selected");
}
};
list.setOnItemClickListener(messageClickedHandler);
}
}
public class CustomAdapter extends ArrayAdapter<BrandModel> {
ArrayList<BrandModel> alBrand = new ArrayList<>();
public CustomAdapter(Context context, int tvResId, ArrayList<BrandModel> alObjects) {
super(context, tvResId, alObjects);
alBrand = alObjects;
}
@Override
public int getCount() {
return super.getCount();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View add = convertView;
BrandHolder holder = null;
if (add == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
add = inflater.inflate(R.layout.textlistview, null);
holder = new BrandHolder();
holder.tvName = (TextView) add.findViewById(R.id.tvName);
holder.ivImage = (ImageView) add.findViewById(R.id.ivIcon);
add.setTag(holder);
} else {
holder = (BrandHolder) add.getTag();
}
holder.tvName.setText(alBrand.get(position).getStrBrdName());
holder.ivImage.setImageResource(alBrand.get(position).getImgBrdLogo());
return add;
}
static class BrandHolder {
TextView tvName;
ImageView ivImage;
}
}