Android 如何使用适配器文本视图?
我有一个适配器,它从Drawable中获取项目并将它们放入GridView。适配器与抽绳器配合使用效果极佳。但是,我需要从布局中获取文本视图,而不是从绘图中获取文本视图 这对Drawable非常有效:Android 如何使用适配器文本视图?,android,textview,adapter,drawable,Android,Textview,Adapter,Drawable,我有一个适配器,它从Drawable中获取项目并将它们放入GridView。适配器与抽绳器配合使用效果极佳。但是,我需要从布局中获取文本视图,而不是从绘图中获取文本视图 这对Drawable非常有效: private Integer[] mThumbIds = { R.drawable.carrot, R.drawable.emerald, R.drawable.turquoise, R.drawable.greensea, }; 但是,我只是尝
private Integer[] mThumbIds = {
R.drawable.carrot, R.drawable.emerald,
R.drawable.turquoise, R.drawable.greensea,
};
但是,我只是尝试将项目路径更改为TextView的ID:
private Integer[] mThumbIds = {
R.id.text_test,R.id.text_test,
R.id.text_test,R.id.text_test,
};
该应用程序运行良好,但我没有看到文本视图,而是显示GridView,但是其中的项目没有填充任何内容。适配器似乎能够导入文本视图,因为它们是可点击的,但是没有任何内容
我错过了什么
文本视图的我的XML:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text_test"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:background="#ff0000"/>
</GridLayout>
我尝试将ImageView更改为TextView,而不是将其更改为此。但是,它现在在GridView中的每个视图中都返回false。我快到了吗
文本视图适配器:
AFAK,您希望为网格布局中的每个项目设置背景。 因此,背景应该是比文本更容易绘制的图像。 挫折或挫折。。。
可能您应该将代码上传到adapater此处您只是导入文本视图的视图,而不是其内容。我想你需要一个使用getText的字符串数组,然后把它发送给你的适配器。那么mThumbIds到底是做什么的呢?请参阅更新的代码,在这里我显示了ImageAdapter和TextViewAdapter,我正在尝试使用它们。我接近了吗?我想显示包含文本和背景的文本视图。由于drawable中的形状不允许文本,我必须通过背景和文本的文本视图来实现这一点,对吗?请看我更新的帖子,包括适配器。是的,你的方法接近解决方案。textView.setText此处,仅当您要设置背景时才为textView设置文本,请调用textView.setBackgroundResource还有一件事是R.id.text\u test。。。如果要设置背景,请将drawable保存在res/drawable文件夹中,然后将其定义为私有整数[]mThumbIds={R.drawable.xxxx为什么在执行TextView时,我会从TextView中获取false作为GridView中的文本。SettXtmhumbids[position]?它不应该从my.XML返回文本Hello World!吗?你的意思是不可能一次获取整个TextView背景+文本,还是我必须先获取背景,然后获取文本,将它们分开?我发现你在这方面遇到了一些问题。TextView.setText它有一个字符串要显示,但你解析的是一个整数,而不是:在本例中,他们使用setImageResourceint id从id资源获取可绘图文件。请参见下面的示例代码textView.SetTextMcContext.getResources.GetStringmHumbids[position];textView.SetBackgroundMcContext.getResources.GetDrawablemHumbid[position];返回textView;您应该使用getResource将资源加载到视图中:D
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
private int mItemHeight = 300;
// set photo item height
public void setItemHeight(int height) {
if (height == mItemHeight) {
return;
}
mItemHeight = height;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(LayoutParams.MATCH_PARENT, mItemHeight));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(0, 0, 0, 0);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.carrot, R.drawable.emerald,
R.drawable.turquoise, R.drawable.greensea,
R.drawable.nephritis, R.drawable.peterriver,
R.drawable.carrot, R.drawable.emerald,
R.drawable.turquoise, R.drawable.greensea,
R.drawable.nephritis, R.drawable.peterriver,
R.drawable.carrot, R.drawable.emerald,
R.drawable.turquoise, R.drawable.greensea,
R.drawable.nephritis, R.drawable.peterriver,
};
}
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView;
if (convertView == null) { // if it's not recycled, initialize some attributes
textView = new TextView(mContext);
textView.setLayoutParams(new GridView.LayoutParams(300, 300));
//textView.setScaleType(ImageView.ScaleType.CENTER_CROP);
textView.setPadding(0, 0, 0, 0);
} else {
textView = (TextView) convertView;
}
textView.setText(mThumbIds[position]);
return textView;
}
// references to our images
private Integer[] mThumbIds = {
R.id.text_test,R.id.text_test,
R.id.text_test,R.id.text_test,
R.id.text_test,R.id.text_test,
R.id.text_test,R.id.text_test,
};
}