我是android编程的新手,尝试使用Typedarray将两个Image Array from(Values)XML in设置为一个公共数组。
下面是我的XML数组:
<array name="Img1">
<item> @drawable/pic_1 </item>
<item> @drawable/pic_2 </item>
<item> @drawable/pic_3 </item>
</array>
<array name="Img2">
<item> @drawable/pic_4 </item>
<item> @drawable/pic_5 </item>
<item> @drawable/pic_6 </item>
</array>
private TypedArray Images;
TypedArray img1 = res.obtainTypedArray(R.array.Img1);
TypedArray img2 = res.obtainTypedArray(R.array.Img2):
ArrayList<TypedArray> img = new ArrayList<TypedArray>();
img.addAll(Arrays.asList(img1));
img.addAll(Arrays.asList(img2));
Images = img.toArray(new TypedArray(img1.length()+img2.length); <-- NOT WORKING!
private ListView ListViewLayout;
private int[] ImagesID;
private EditText Search;
ArrayList<String> name = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_lv_search);
Resources res = getResources();
String[] saugname = res.getStringArray(R.array.SauglanzeName);
String[] pumpmname = res.getStringArray(R.array.PumpMName);
String[] saugnummer = res.getStringArray(R.array.SauglanzeNumber);
String[] pumpmnummer = res.getStringArray(R.array.PumpMNummer);
TypedArray saugimg = res.obtainTypedArray(R.array.SauglanzeImg);
TypedArray pumpmimg = res.obtainTypedArray(R.array.PumpeMImg);
name.addAll(Arrays.asList(saugname));
name.addAll(Arrays.asList(pumpmname));
ArrayList<String> number = new ArrayList<String>();
number.addAll(Arrays.asList(saugnummer));
number.addAll(Arrays.asList(pumpmnummer));
Number = number.toArray(new String[saugnummer.length+pumpmnummer.length]);
ArrayList<Integer> imgInts = new ArrayList<Integer>();
int nr = -1;
while ( ++nr < saugimg.length() )
imgInts.add (saugimg.getResourceId(nr, 0));
nr = -1;
while ( ++nr < pumpmimg.length() )
imgInts.add (pumpmimg.getResourceId(nr, 0));
ImagesID = new int[imgInts.size()];
for (int i=0; i < imgInts.size(); i++)
{
ImagesID[i] = ((Integer) imgInts.get(i)).intValue();
}
Search = (EditText) findViewById(R.id.EditTextSearch);
ListViewLayout = (ListView) findViewById(R.id.listViewLayoutSearch);
final TIAdapter adapter = new TIAdapter(this, name, ImagesID, Number);
ListViewLayout.setAdapter(adapter);
ListViewLayout.setOnItemClickListener(this);
Search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
类适配器:
class TIAdapter extends ArrayAdapter<String> {
Context context;
int [] ImagesID;
ArrayList<String> NameArray;
String[] NummerArray;
TIAdapter(Context c, ArrayList<String> Artikel, int[] imgs, String[] Nummer) {
super(c, R.layout.layout_text_image, R.id.textViewArtikel, Artikel);
this.context = c;
this.ImagesID = imgs;
this.NameArray = Artikel;
this.NummerArray = Nummer;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ImageView imageView = null;
if(row == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.layout_text_image, parent, false);
imageView = (ImageView)row.findViewById(R.id.imageViewArtikel);
}
else {
imageView = (ImageView)row.findViewById(R.id.imageViewArtikel);
DecodeTask dt1 = (DecodeTask)imageView.getTag(R.id.imageViewArtikel);
if(dt1 != null)
dt1.cancel(true);
}
imageView.setImageBitmap(null);
DecodeTask dt2 = new DecodeTask(getContext(), imageView, ImagesID[position]);
dt2.execute();
TextView textViewArtikel = (TextView) row.findViewById(R.id.textViewArtikel);
TextView textViewArtikelNummer = (TextView) row.findViewById(R.id.textViewArtikelNummer);
imageView.setTag(R.id.imageViewArtikel, dt2);
textViewArtikel.setText(name.get(position));
textViewArtikelNummer.setText(Number[position]);
return row;
}
}
也许是这样的:
ArrayList<Drawable> img = new ArrayList<Drawable>();
int nr = -1;
while ( ++nr < img1.length() )
img.add( img1.getDrawable(nr));
nr = -1;
while ( ++nr < img2.length() )
img.add( img2.getDrawable(nr));
Drawable [] Images;
Images = img.toArray(new Drawable[img.size()] );
问题内容: 我有两个像 我希望它们合并成单个数组 问题答案: 您需要该方法。
问题内容: 我需要一个将所有元素组合在一起的新数组,即 做这个的最好方式是什么? 对不起,我忘了,这些ID永远不会匹配,但是从技术上讲,这些名称可能会出现,但不可能出现,它们都必须列在一个数组中。我查看了array_merge,但不确定这是否是最佳方法。另外,您将如何对此进行单元测试? 问题答案: 效率更高,但有两种选择:
问题内容: 我见过类似的问题,但没有一个提供我所要的答案,因此,如果这被认为是重复的,我在此致歉。我正在尝试将数组{1,2,3}和{4,5,6}合并为{1,2,3,4,5,6}。我做错了什么?我是java的新手。抱歉,问题很愚蠢。 问题答案: 代替 您需要调用merge方法,并将结果分配给数组,例如: 您的for循环也应该是:
代码不止一次返回0和公共数字。我想让它返回一个数组与公共数字一次!那么,如何返回一个数组,数组中的数字对两个数组都是通用的。我想返回{2,7,4}-类似这样的东西。当我试图返回数组时,我总是出现越界异常。谢谢,巴里
问题内容: 我很难弄清楚如何移动数组元素。例如,给出以下内容: 我为什么能写入移动功能之前? 还是之后? 移动后,应更新其余元素的索引。这意味着在第一个示例中,移动后arr [0] =’a’,arr [1] =’d’arr [2] =’b’,arr [3] =’c’,arr [4] = ‘e’ 这似乎应该很简单,但是我无法将其包裹住。 问题答案: 如果您想在npm上使用一个版本,则array-mo
问题内容: 我正在尝试从Matplotlib图中获取一个numpy数组图像,目前正在通过保存到文件中,然后再读回文件的方式来完成此操作,但是我觉得必须有一种更好的方法。这是我现在正在做的事情: 我尝试了这个: 从我发现的示例中发现,但是它给我一个错误,指出“ FigureCanvasAgg”对象没有属性“ renderer”。 问题答案: 为了获得图形内容作为RGB像素值,需要首先绘制画布的内容。