我有一个带有文本和图像的自定义列表视图。
我的适配器
..
public class MyAdapter extends ArrayAdapter<String>
{
private String [] country;
private int [] flag;
private Context mContext;
MyAdapter(@NonNull Context context, String[] countryNames, int[] flagImages)
{
super(context, R.layout.listview_item);
this.country = countryNames;
this.flag = flagImages;
this.mContext = context;
}
@Override
public int getCount()
{
return names.length;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent)
{
ViewHolder mViewHolder = new ViewHolder();
if(convertView == null)
{
LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
assert mInflater != null;
convertView = mInflater.inflate(R.layout.listview_item, parent, false);
mViewHolder.mImage = convertView.findViewById(R.id.imageView);
mViewHolder.mText = convertView.findViewById(R.id.textView);
convertView.setTag(mViewHolder);
} else {
mViewHolder = (ViewHolder)convertView.getTag();
}
mViewHolder.mImage.setImageResource(flag[position]);
mViewHolder.mText.setText(country[position]);
return convertView;
}
static class ViewHolder
{
ImageView mImage;
TextView mText;
}
}
还有这个
..
public class MainActivity extends AppCompatActivity
{
ListView mListView;
int [] flagImages = {R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5, R.drawable.a6, R.drawable.a7, R.drawable.a8, R.drawable.a9, R.drawable.a10, R.drawable.a11, R.drawable.a12};
String [] countryNames;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
countryNames = getResources().getStringArray(R.array.cList);
mListView = findViewById(R.id.listview);
final MyAdapter myAdapter = new MyAdapter(MainActivity.this, countryNames, flagImages);
mListView.setAdapter(myAdapter);
Array.sort(countryNames);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
{
Intent mIntent = new Intent(MainActivity.this, SecondActivity.class);
mIntent.putExtra("countryName", countryNames[i]);
mIntent.putExtra("flagImage", flagImages[i]);
startActivity(mIntent);
}
});
}
}
所有的标准语言都很好。但是当改变语言系统时,文本会改变顺序(正确),而图像则不会。
如何将图像列表设置为文本列表?
谢谢。。。
这是主活动布局。。
<?xml version="1.0" encoding="utf-8"?>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="ronnydev.testapp.MainActivity">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:divider="@android:drawable/screen_background_light_transparent"
android:scrollbars="none" />
这是strings.xml布局。。
<?xml version="1.0" encoding="utf-8"?>
<string-array name="cList">
<item>Denmark</item>
<item>Finland</item>
<item>France</item>
<item>Germany</item>
<item>Italy</item>
<item>Poland</item>
<item>Portugal</item>
<item>Romania</item>
<item>Slovenia</item>
<item>Spain</item>
<item>Sweden</item>
<item>United Kingdom</item>
</string-array>