我正在尝试通过一些教程代码来工作,并添加一个OnItemClick侦听器,但是当它击中侦听器并导致我的应用崩溃时,总是引发异常。这是我在Android环境中进行的首次尝试,因此我正在尝试学习所有这些东西之间的相互关系。
这是我尝试过的:
import java.util.ArrayList; import java.util.List; import org.json.JSONObject; import android.app.AlertDialog; import android.app.ListActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; public class RssActivity extends ListActivity{ private RssListAdapter adapter; private OnItemClickListener newsSelectListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { AlertDialog.Builder alert=new AlertDialog.Builder(RssActivity.this); alert.setTitle("Clicked").setMessage("Item clicked").setNeutralButton("OK", null).show(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); List<JSONObject> jobs = new ArrayList<JSONObject>(); try { jobs = RssReader.getLatestRssFeed(); } catch (Exception e) { Log.e("RSS ERROR", "Error loading RSS Feed Stream >> " + e.getMessage() + " //" + e.toString()); } adapter = new RssListAdapter(this,jobs); setListAdapter(adapter); ListView lv = (ListView)findViewById(R.id.list); lv.setOnItemClickListener(newsSelectListener); } }
我也尝试将setListAdapter更改为lv.setListAdapter,但这似乎不是有效的声明。
我想念什么?
ListActivity不要求你指定一个布局通过setContentView()那就是如果你想显示 只有 一个列表,但如果添加了另一种观点,你的ListView应该包含的android:id属性设置为@android:id/list像下面这样的XML
setContentView()
android:id
@android:id/list
<ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView>
尝试更改您的代码
ListView lv = (ListView)findViewById(R.id.list);
对此
ListView lv = getListView(); lv.setOnItemClickListener(newsSelectListener);