我正在尝试在Android中构建我的第一个ListView,为此我正在构建一个自定义的ListAdapter。所以我创建了一个名为NotificationsAdapter的类,它扩展了BaseAdapter。由于我希望能够将字符串翻译成其他语言,因此我在strings.xml中创建了一个字符串数组:
<string-array name="notifications_string_array">
<item>The first item</item>
<item>The second item</item>
<item>Number three</item>
<item>Numero four</item>
</string-array>
除了放弃此列表中的项目之外,我还希望能够单击每个项目。这应该创建一个意图让用户进入下一个屏幕(总是相同的),我必须给它一个putextra,以便我在下一个活动中知道用户点击了哪个项目。此外,我想在列表项旁边放置一个自定义图标。
在我的适配器中,我有一个构造函数,我在其中加载了notifications_string_array,如下所示:
int theStringArray = R.array.notifications_string_array;
然而,这只是字符串数组的id。 所以第一个问题;如何加载整个数组?
然后我需要在视图中加载数组,我尝试这样做:
@Override
public View getView(final int position, View convertView, ViewGroup viewGroup) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_item_notifications, viewGroup, false);
TextView textView = (TextView) rowView.findViewById(R.id.text_notification);
textView.setText(theStringArray[position]);
}
这非常错误,因为“theStringArray”根本不是字符串数组,而只是一个引用字符串数组的int。我想这可以通过回答我的第一个问题来解决。
从这一点开始,我不知道如何添加一个我可以根据用户点击的项目提供.putextra的意图。最后,如何给每个项目提供自己的图标?我应该在哪里存储这个图标列表,如何将其映射到正确的项目?
如果有人能够启发我,我将非常感激!
答案 0 :(得分:1)
这是加载String-array的方法:
final String[] theStringArray = getResources().getStringArray(R.array.notifications_string_array);
答案 1 :(得分:1)
String[] sarray = getResources().getStringArray(R.array.notifications_string_array);
现在您可以将此数组传递给适配器类的构造函数并在那里使用
I want to put a custom icon next to the list item.
您需要一个带有textview和imageview的自定义布局。在getView
中隐藏自定义布局并相应地更新textview和imageview。
I also want to be able to click every item
您可以为textview和imageview设置侦听器。如果要单击行的侦听器,请使用setOnItemClickListener
。
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
TextView tv = (TextView)arg1.findViewById(R.id.text_notification);
String text = tv.getText().toString();
Intent i = new Intent(ActivityName.this,SecondActivity.class);
i.putExtra("key",text);
startActivity(i);
}
});
对于drawables
int [] mydrawable ={R.drawable.icon1,R.drawable.icon2}; // pass this to the constructor of you adapter class