我有一个带有 ListView 适配器类的自定义 ltView,我有一个代码 stub ,它填充了我的 lsit View 的 4 行。 xml 等看起来不错, Activity 本身构建正常,但我似乎无法在不导致错误的情况下插入处理程序。
这是我目前的代码。
游戏总结
public class GamesSummary extends ListActivity {
private ProgressDialog m_ProgressDialog = null;
private ArrayList<MyGamesList> myGamesArrayList = null;
private MyGamesAdapter myGames_adapter;
private Runnable viewGames;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.games_summary);
myGamesArrayList = new ArrayList<MyGamesList>();
this.myGames_adapter = new MyGamesAdapter(this, R.layout.row,
myGamesArrayList);
setListAdapter(this.myGames_adapter);
// set Item click listener for list view
viewGames = new Runnable() {
@Override
public void run() {
getMyGames();
}
};
// Start the 'waiting' dialog thread
Thread thread = new Thread(null, viewGames, "MagentoBackground");
thread.start();
m_ProgressDialog = ProgressDialog.show(GamesSummary.this,
"Please wait...", "Retrieving data ...", true);
}
MyGamesAdapter
private class MyGamesAdapter extends ArrayAdapter<MyGamesList> {
private ArrayList<MyGamesList> items;
public MyGamesAdapter(Context context, int textViewResourceId,
ArrayList<MyGamesList> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
MyGamesList o = items.get(position);
if (o != null) {
}
return v;
}
}
填充列表
private void getMyGames() {
/*
* Add the users current games using the myGames class. example below of
* stubb code use
*/
try {
myGamesArrayList = new ArrayList<MyGamesList>();
MyGamesList myGame1 = new MyGamesList();
myGame1.setLeagueName("game1");
myGame1.setLeaguePoints("36");
myGame1.setLeaguePos("26");
myGame1.setLeagueRound("5");
MyGamesList myGame2 = new MyGamesList();
myGame2.setLeagueName("game2");
myGame2.setLeaguePoints("36");
myGame2.setLeaguePos("26");
myGame2.setLeagueRound("5");
myGamesArrayList.add(myGame1);
myGamesArrayList.add(myGame2);
Thread.sleep(2000);
Log.i("ARRAY", "" + myGamesArrayList.size());
} catch (Exception e) {
Log.e("BACKGROUND_PROC", e.getMessage());
}
runOnUiThread(returnRes);
}
returnRes Runnable
private Runnable returnRes = new Runnable() {
@Override
public void run() {
if (myGamesArrayList != null && myGamesArrayList.size() > 0) {
myGames_adapter.notifyDataSetChanged();
for (int i = 0; i < myGamesArrayList.size(); i++)
myGames_adapter.add(myGamesArrayList.get(i));
}
m_ProgressDialog.dismiss();
myGames_adapter.notifyDataSetChanged();
}
};
}
最佳答案
您的 ListView 的点击处理程序将像这样工作:
getListView().setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
在您的 xml 布局中,不要忘记 id:
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="0dp"
android:divider="#ffffff"
android:clickable="true"
android:cacheColorHint="#00000000"
android:fadingEdge="none"
android:fastScrollEnabled="false"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:smoothScrollbar="true"
/>
关于android - 自定义 Listview - 我在哪里设置我的点击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747699/