首页 新闻 会员 周边 捐助

安卓自定义适配器问题

0
悬赏园豆:5 [已解决问题] 解决于 2024-09-23 15:37

左边已建了样式,右边自定义时总是红色(提示无法解释符号mainitem),请问是什么问题,要怎样改?谢谢!

tea2007的主页 tea2007 | 初学一级 | 园豆:7
提问于:2024-09-23 10:27
< >
分享
最佳答案
0

不应该导入android系统包下的R文件,应该是你当前项目下的R文件。
把前面的android移除,再导入当前项目下的包名。

收获园豆:5
shunlibest | 菜鸟二级 |园豆:241 | 2024-09-23 11:13

应该怎么写?我的样式文件mainitem在layout目录内.是否还要定义自己的适配器类?

tea2007 | 园豆:7 (初学一级) | 2024-09-23 14:03

@tea2007: import 这里填写你的包名.R;

shunlibest | 园豆:241 (菜鸟二级) | 2024-09-23 17:07
其他回答(1)
0

private List<String> setItemList = new ArrayList<>();
setItemList.add("仪器调零");
setItemList.add("仪器校准");
setItemList.add("测量项目");
setItemList.add("开机选项");
setItemList.add("数据管理");
setItemList.add("售后服务");
以上数据写一个安卓自定义适配器,要求能修改字体大小颜色
以下为解决代码:
在Android中,要实现一个自定义适配器来展示列表项(如setItemList中的项目),并且允许修改字体大小和颜色,你需要创建一个继承自BaseAdapter(或者更常用的ArrayAdapter的自定义版本,但这里为了更灵活的控制,我们将使用BaseAdapter)的类。以下是一个基本的实现示例:

首先,你需要一个布局文件来定义每个列表项的外观。这里假设你已经有一个名为list_item.xml的布局文件,它包含了一个TextView来显示文本。

list_item.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textView_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:textSize="18sp" <!-- 初始字体大小,可以在代码中修改 -->
android:textColor="#000000" <!-- 初始字体颜色,可以在代码中修改 -->
android:gravity="center_vertical" />
然后,创建一个自定义适配器类:

CustomListAdapter.java:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

public class CustomListAdapter extends BaseAdapter {

private Context context;  
private List<String> items;  
private int textSize; // 字体大小  
private int textColor; // 字体颜色  

public CustomListAdapter(Context context, List<String> items, int textSize, int textColor) {  
    this.context = context;  
    this.items = items;  
    this.textSize = textSize; // 例如:18  
    this.textColor = textColor; // 例如:Color.BLACK  
}  

@Override  
public int getCount() {  
    return items.size();  
}  

@Override  
public Object getItem(int position) {  
    return items.get(position);  
}  

@Override  
public long getItemId(int position) {  
    return position;  
}  

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

    if (convertView == null) {  
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
        convertView = inflater.inflate(R.layout.list_item, parent, false);  

        holder = new ViewHolder();  
        holder.textView = convertView.findViewById(R.id.textView_item);  

        convertView.setTag(holder);  
    } else {  
        holder = (ViewHolder) convertView.getTag();  
    }  

    // 设置字体大小和颜色  
    holder.textView.setTextSize(textSize);  
    holder.textView.setTextColor(textColor);  

    // 设置文本  
    holder.textView.setText(items.get(position));  

    return convertView;  
}  

static class ViewHolder {  
    TextView textView;  
}  

}
在Activity中,你可以这样使用这个适配器:
List<String> setItemList = new ArrayList<>();
setItemList.add("仪器调零");
setItemList.add("仪器校准");
// ... 添加其他项目

// 假设你想设置字体大小为18sp,颜色为黑色
int textSize = 18; // 字体大小
int textColor = Color.BLACK; // 字体颜色

CustomListAdapter adapter = new CustomListAdapter(this, setItemList, textSize, textColor);
listView.setAdapter(adapter); // 假设你有一个名为listView的ListView

tea2007 | 园豆:7 (初学一级) | 2024-09-23 15:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册