Java 从ListView中的String.xml获取字符串数组
我正在从网上下载图片,并从这个网站在ListView中延迟加载- 但是,我想在listview上自定义textview。我希望我的textview从string.xml中的字符串数组中提取字符串,而不是从code holder.text.settexrtite+位置提取字符串 请帮助我,因为我是初学者。我很感激。谢谢 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
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;
}
}