在做了一些搜索之后,我发现了如何在listview中创建适配器并查看一些字符串数据并添加事件监听器。这是代码,
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
private TextView tv;
private MediaPlayer player = null;
ListView listV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.display_result);
listV = (ListView)findViewById(R.id.listView1);
final Intent i = new Intent(this,BActivity.class);
String[] values = new String[] { "C 2 F", "F 2 C", "Currency"};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.activity_list_item, R.id.listView1, values);
listV.setAdapter(arrayAdapter);
listV.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
int itemPosition = position;
if(itemPosition == 1)
{
i.putExtra("identify", "c2f");
startActivityForResult(i, 1);
if(player != null)
player.stop();
}
else if(itemPosition == 2)
{
i.putExtra("identify", "f2c");
startActivityForResult(i, 1);
if(player != null)
player.stop();
}
else if(itemPosition == 3)
{
i.putExtra("identify", "currency");
startActivityForResult(i, 1);
if(player != null)
player.stop();
}
}
});
}
当我启动应用程序时,它会崩溃,在行上显示NullPointerException“ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.activity_list_item,R.id.listView1,values);”我猜它是因为android.R.layout.activity_list_item,在我看到的例子中,这是android.R.layout.activity_list_item_1,我不知道在哪里定义它或者是什么目的,并且请详细说明填充过程列表视图以及它为何如此复杂。
答案 0 :(得分:1)
更改为
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, values);
查看来源@
我认为您不需要android.R.layout.activity_list_item
另外,您可能希望查看ArrayAdapter
http://developer.android.com/reference/android/widget/ArrayAdapter.html
答案 1 :(得分:1)
我猜这两个论点都是问题:
android.R.layout.activity_list_item:
这是用于行的布局xml。
第二个ID(您使用R.id.listView1
):
这是您在填充数据之前传递的布局中的TextView
的ID。在上面指定的布局中,它必须是TextView
,因此R.id.listView1
可能无效。
答案 2 :(得分:0)
删除这个`R.id.listView1应该是
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.activity_list_item, values);
listV.setAdapter(arrayAdapter);