Android 带有自定义适配器的ListView:某些项被隐藏
我有一个带有自定义适配器的ListView,但在ListView中滚动时,某些项目会隐藏: 从图中可以看到,从a69跳到a72,留下隐藏项a70和a71 以下是自定义适配器的代码:Android 带有自定义适配器的ListView:某些项被隐藏,android,android-layout,android-listview,android-adapter,Android,Android Layout,Android Listview,Android Adapter,我有一个带有自定义适配器的ListView,但在ListView中滚动时,某些项目会隐藏: 从图中可以看到,从a69跳到a72,留下隐藏项a70和a71 以下是自定义适配器的代码: public NewCurrenciesAdapter(ArrayList<NewCurrencyData> list, Context context) { m_list = list; m_context = context; m_layoutInflater = (Layou
public NewCurrenciesAdapter(ArrayList<NewCurrencyData> list, Context context) {
m_list = list;
m_context = context;
m_layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return m_list.size();
}
@Override
public Object getItem(int position) {
return m_list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = m_layoutInflater.inflate(R.layout.addcurrency_item, parent, false);
}
TextView currencyName = (TextView) convertView.findViewById(R.id.textCurrencyName);
currencyName.setText("a" + position);
ImageView currencyImage = (ImageView) convertView.findViewById(R.id.imageCurrencyCountry);
currencyImage.setImageResource(getImageId(m_context, "c" + m_list.get(position).name.toLowerCase()));
if (m_list.get(position).checked) {
convertView.setBackgroundResource(android.R.color.holo_green_dark);
}
else {
convertView.setBackgroundResource(android.R.color.background_light);
}
return convertView;
}
public-newcurrencesadapter(数组列表,上下文){
m_list=列表;
m_context=上下文;
m_layoutInflater=(layoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}
@凌驾
public int getCount(){
返回m_list.size();
}
@凌驾
公共对象getItem(int位置){
返回m_list.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=m_LayoutFlater.inflate(R.layout.addcurrency_项,父项,false);
}
TextView currencyName=(TextView)convertView.findViewById(R.id.textCurrencyName);
currencyName.setText(“a”+位置);
ImageView currencyImage=(ImageView)convertView.findViewById(R.id.imageCurrencyCountry);
setImageResource(getImageId(m_上下文,“c”+m_list.get(position.name.toLowerCase());
if(m_list.get(position).checked){
setBackgroundResource(android.R.color.holo_green_dark);
}
否则{
convertView.setBackgroundResource(android.R.color.backgroundlight);
}
返回视图;
}
编辑:以下是活动的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@+id/ListViewAllCurrencies"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.8">
</ListView>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="Apply"
android:id="@+id/buttonAdd"
android:layout_weight=".50"
android:onClick="applyChange"/>
<Button
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="Cancel"
android:id="@+id/buttonCancel"
android:layout_weight=".50"
android:onClick="cancelChange"/>
</LinearLayout>
</LinearLayout>
和addcurrency_项:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageCurrencyCountry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/cusd"
android:contentDescription="" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textCurrencyName"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:textSize="20sp"
android:text="Currency name"/>
</RelativeLayout>
</LinearLayout>
调试由
getImageId(m_上下文,“c”+m_list.get(position).name.toLowerCase()返回的int
它可能返回了0或-1,但没有在imageview中设置图像,并且视图已折叠!听起来布局文件中存在问题。共享包含listview和按钮的布局文件。如果您使用的是相对布局,请在上面设置类似listview的布局\=“@+id/按钮布局id”。谢谢!用ImageView注释这些行解决了问题。