Java 从ListView中的String.xml获取字符串数组

Java 从ListView中的String.xml获取字符串数组,java,android,arrays,xml,string,Java,Android,Arrays,Xml,String,我正在从网上下载图片,并从这个网站在ListView中延迟加载- 但是,我想在listview上自定义textview。我希望我的textview从string.xml中的字符串数组中提取字符串,而不是从code holder.text.settexrtite+位置提取字符串 请帮助我,因为我是初学者。我很感激。谢谢 XML: 适配器: public class CategoryImageAdapter extends BaseAdapter implements OnClickListener

我正在从网上下载图片,并从这个网站在ListView中延迟加载-

但是,我想在listview上自定义textview。我希望我的textview从string.xml中的字符串数组中提取字符串,而不是从code holder.text.settexrtite+位置提取字符串

请帮助我,因为我是初学者。我很感激。谢谢

XML:

适配器:

public class CategoryImageAdapter extends BaseAdapter implements OnClickListener {

private Activity activity;
private String[] data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;

public CategoryImageAdapter(Activity a, String[] d) {
    activity = a;
    data = d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(activity.getApplicationContext());

}


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

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

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

@Override
public void onClick(View v) {

}

public static class ViewHolder {
    public TextView text;
    public ImageButton imageButton;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    ViewHolder holder;
    if(convertView == null){
        vi = inflater.inflate(R.layout.ingcategoryrow, null);
        holder = new ViewHolder();
        holder.text = (TextView)vi.findViewById(R.id.textView2);
        holder.imageButton=(ImageButton)vi.findViewById(R.id.imageButton2);
        vi.setTag(holder);
    }
    else
        holder=(ViewHolder)vi.getTag();

    holder.text.setText("Title " + position);
    ImageButton imageButton = holder.imageButton;
    imageLoader.DisplayImage(data[position], imageButton);
    vi.setOnClickListener(new OnItemClickListener(position));
    return vi;
}

private class OnItemClickListener implements OnClickListener{
    private int mPosition;

    OnItemClickListener(int position) {
        mPosition = position;
    }


    @Override
    public void onClick(View arg0) {
        IngredientCategoryMain sct = (IngredientCategoryMain)activity;
        sct.onItemClick(mPosition);

    }
}
}

首先将数组作为

String[] mTestArray = getResources().getStringArray(R.array.titles);    
然后用它作为

holder.text.setText(mTestArray[position] + position);
在构造函数中获取数组,如:

public CategoryImageAdapter(Activity a, String[] d) {
    activity = a;
    data = d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(activity.getApplicationContext());
    mTestArray = getResources().getStringArray(R.array.testArray);   
}

这是我的工作代码。请使用此代码:

String.xml

 <string-array name="titles">
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
        <item>5</item>
        <item>6</item>
        <item>7</item>
        <item>8</item>
        <item>9</item>
        <item>10</item>
        <item>11</item>
        <item>12</item>
    </string-array>

您是说位置值直接映射到字符串数组中的同一索引吗?因此,如果位置为0,字符串值将为1?是的,我应该如何做呢?我应该调用string[]mTestArray=getResources.getStringArrayR.array.testArray;在public View下getView?一点也不。因为在滚动listview时会多次调用get View。只需在适配器构造函数中调用它。我仍然无法正确获取它,如果您可以指定我应该在何处添加这些代码,非常感谢。@Cassie.L您能说明什么不起作用。我已经编辑了我的原始帖子,并添加了我的主要活动代码。你能再看一遍吗?适配器页面上的数据将链接到mString[]的url。再次感谢!这是my.java filepublic类IngredientCategoryMain扩展活动{ListView列表;CategoryImageAdapter适配器;@Override protected void onCreateBundle savedInstanceState{super.onCreatesavedInstanceState;setContentViewR.layout.activity\u Component\u category\u main;list=ListViewfindViewByIdR.id.listView;adapter=new CategoryImageAdapter此,mStrings;list.setAdapter adapter;如何将上面的代码添加到当前的.java文件中。我尝试了很多次,但仍然失败。yes添加此代码.java文件公共类IngredientCategoryMain扩展活动{ListView lv;String[]title;CategoryImageAdapter;@Override protected void onCreateBundle savedInstanceState{super.onCreatesavedInstanceState;setContentViewR.layout.activity\u Component\u category\u main;lv=ListView findViewByIdR.id.listView1;title=getResources.getStringArrayR.array.titles;adapter=new CategoryImageAdapterIngredientCategoryMain.this,title;lv.SetAdapterAdapterAdapter;}从github下载示例:-Cassie.L
public CategoryImageAdapter(Activity a, String[] d) {
    activity = a;
    data = d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(activity.getApplicationContext());
    mTestArray = getResources().getStringArray(R.array.testArray);   
}
 <string-array name="titles">
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
        <item>5</item>
        <item>6</item>
        <item>7</item>
        <item>8</item>
        <item>9</item>
        <item>10</item>
        <item>11</item>
        <item>12</item>
    </string-array>
public class MainActivity extends Activity {

    ListView lv;
    String[] title;
    CategoryImageAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv=(ListView) findViewById(R.id.listView1);

        title=getResources().getStringArray(R.array.titles);

        adapter=new CategoryImageAdapter(MainActivity.this, title);
        lv.setAdapter(adapter);

    }

    public class CategoryImageAdapter extends BaseAdapter implements OnClickListener {

        private Activity activity;
        private String[] data;
        private LayoutInflater inflater = null;

        public CategoryImageAdapter(Activity a, String[] d) {
            activity = a;
            data = d;
            inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        }


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

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

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

        @Override
        public void onClick(View v) {

        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View vi=convertView;
            ViewHolder holder;
            if(convertView == null){
                vi = inflater.inflate(R.layout.row_lv, null);
                holder = new ViewHolder();
                holder.text = (TextView)vi.findViewById(R.id.textView1);
                vi.setTag(holder);
            }
            else
                holder=(ViewHolder)vi.getTag();

            holder.text.setText("Title " + data[position]);

            return vi;
        }
    }
        public class ViewHolder {
            public TextView text;

        }

}