Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用适配器文本视图?_Android_Textview_Adapter_Drawable - Fatal编程技术网

Android 如何使用适配器文本视图?

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, }; 但是,我只是尝

我有一个适配器,它从Drawable中获取项目并将它们放入GridView。适配器与抽绳器配合使用效果极佳。但是,我需要从布局中获取文本视图,而不是从绘图中获取文本视图

这对Drawable非常有效:

    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,

};

}