将多个字符串资源用于不同的textview

问题描述

| 嘿,我目前正在制作一个小型Android应用程序时遇到麻烦。我正在尝试构建的是: 列表界面 每行具有两个TextViews(标题和标题)。 从两个单独的字符串数组资源中获取这些值。 界面在“ 0”中具有以下文本视图,
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
          android:layout_width=\"wrap_content\"
          android:layout_height=\"wrap_content\" android:orientation=\"vertical\">

<TextView android:text=\"@+id/rowTitle\"
          android:layout_height=\"wrap_content\"
          android:id=\"@+id/title\"
          android:textSize=\"25px\"
          android:layout_width=\"match_parent\">
</TextView>

<TextView android:text=\"@+id/rowCaption\"
          android:layout_height=\"wrap_content\"
          android:id=\"@+id/caption\"
          android:textSize=\"25px\"
          android:layout_width=\"match_parent\">
</TextView>
字符串资源是
<string-array name=\"menuEntryTitles\">
    <item>Start</item>
    <item>Stop</item>
</string-array>

<string-array name=\"menuEntryCaptions\">
    <item>Starts the update listener service.</item>
    <item>Stops the update listener service.</item>
</string-array>
应该有两行标题为“开始”和“停止”,每行都有其相关的标题。我尝试使用ѭ3来实现此目的,
ArrayAdapter listAdapter = ArrayAdapter.createFromResource(this,new int[] {R.array.menuEntryTitles,R.array.menuEntryCaptions},new int[] {R.id.rowTitle,R.id.rowCaption});
但是由于
createFromResource
只能提供
int[]
时需要
int
参数而出现错误。 希望这里有人能指出正确的方向。 干杯     

解决方法

一种解决方案是创建您自己的适配器,因为ArrayAdapter仅使用一个阵列,而不是两个。 您可以在ListActivity中将适配器创建为私有类。尝试这样的事情(警告:未测试代码):
public class MyListActivity extends ListActivity {
    protected void onCreate(){

        ....

        // Get arrays from resources
        Resources r = getResources();    
        String [] arr1 = r.getStringArray(\"menuEntryTitles\");
        String [] arr1 = r.getStringArray(\"menuEntryCaptions\");

        // Create your adapter
        MyAdapter adapter = new MyAdapter(arr1,arr2);

        setListAdapter(adapter);
    }

    private class MyAdapter extends BaseAdapter {
        private LayoutInflater inflater;

        String [] arr1;
        String [] arr2;

        public MyAdapter(String[] arr1,String[] arr2){
            inflater = (LayoutInflater)MyListActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            this.arr1 = arr1;
            this.arr2 = arr2;
        }

        @Override
        public int getCount() {
            return arr1.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

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

        // Used to keep references to your views,optimizes scrolling in list
        private static class ViewHolder {
             TextView tv1;
             TextView tv2;
        }


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

            ViewHolder holder;
            if (convertView == null){
                convertView = inflater.inflate(R.layout.row_layout,null);

                // Creates a ViewHolder and store references to the two children views
                // we want to bind data to.
                holder = new ViewHolder();
                holder.tv1 = (TextView) convertView.findViewById(R.id.rowTitle);
                holder.tv2 = (TextView) convertView.findViewById(R.id.rowCaption);

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

            holder.tv1.setText(arr1[position]);
            holder.tv2.setText(arr2[position]);

            return convertView;
        }
    }
}
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...