我有一个扩展ListFragment的类,它会覆盖OnListItemClick方法.我也在另一个ListFragment中以相同的方式执行此操作(并调用该方法).我想知道为什么当我点击列表项时不会调用该方法?
这是代码:
package org.doraz.fdboard.activity;
import java.sql.SQLException;
import java.util.Collection;
import org.doraz.fdboard.FantasyDraftBoardApplication;
import org.doraz.fdboard.R;
import org.doraz.fdboard.activity.DraftBoardActivity.PlayerDetailsActivity;
import org.doraz.fdboard.domain.FantasyLeague;
import org.doraz.fdboard.domain.FantasyTeam;
import org.doraz.fdboard.domain.Player;
import org.doraz.fdboard.domain.Position;
import org.doraz.fdboard.repository.FantasyDraftBoardRepository;
import org.doraz.fdboard.view.PlayerAdapter;
import org.doraz.fdboard.view.PlayerCursorAdapter;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class ListPlayersFragment extends ListFragment implements OnItemClickListener {
private final static String TAG = "ListPlayersFragment";
private boolean mDualPane;
private int curSelectedPlayerPosition = 0;
private PlayerCursorAdapter playerAdapter; …Run Code Online (Sandbox Code Playgroud) 在我的应用程序的平板电脑布局中,我有三个ListFragments和一个常规Fragment,我们称之为Make,Model,Size和Details.最初填充Make列表,然后根据Make选择,填充Model列表; 选择模型时,将填充"大小"列表; 选择"大小"时,将显示"详细信息".这些事件中的每一个(列表项选择)都是通过onListItemClick处理程序处理的.
在启动时,我想填充Make列表,选择列表中的第一个Make并让它通过onListItemClick处理程序来填充Model列表(依此类推,以便填充所有列表并显示详细信息 - 这也应该是在任何列表中进行任何选择时的行为 - 选择下一个列表中的第一个项目,直到我们显示详细信息).请注意,我可以控制DB,对于每个Make,总会有至少一个Model,每个Make/Model至少有一个Size,每个Make/Model/Size只有一个Detail.
所以,我想选择列表中的第一项并让它触发onListItemClick处理程序.我已经尝试了以下(使用适当的边界检查等),但它不起作用.
getListView().setItemChecked(0, true);
Run Code Online (Sandbox Code Playgroud)
对"开箱即用"ListFragment的唯一更改是将CacheColorHint设置为这样
getListView().setCacheColorHint(R.color.GhostWhite);
Run Code Online (Sandbox Code Playgroud)
其中GhostWhite在styles.xml中设置为
<color name="GhostWhite">#88FFFFFF</color>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
提前致谢.
我想创建一个非常简单的游标自定义游标适配器,以方便在点击时更改行项目的颜色.使用以下代码
private static int save = -1;
public void onListItemClick(ListView parent, View v, int position, long id) {
parent.getChildAt(position).setBackgroundColor(Color.BLUE);
if (save != -1 && save != position){
parent.getChildAt(save).setBackgroundColor(Color.BLACK);
}
save = position;
}
Run Code Online (Sandbox Code Playgroud)
我从这个线程获得了代码/sf/answers/535491631/
我会使用一个简单的游标适配器并将代码放在onClick中,但由于ListFragment中的默认列表重用了视图,因此滚动多个视图时会突出显示.谈到IRC,有人建议我创建一个自定义游标适配器.但是,我似乎无法找到如何执行此操作的最佳实践,以及上述代码段所适用的位置.可以非常感谢帮助.
public class AreaCursorAdapter extends CursorAdapter {
private Context context;
public AreaCursorAdapter(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView list_item = (TextView)view.findViewById(android.R.id.text1);
list_item.setText(cursor.getString(cursor.getColumnIndex(INDICATOR_NAME)));
}
@Override
public View newView(Context context, …Run Code Online (Sandbox Code Playgroud) android android-listview simplecursoradapter android-listfragment android-cursoradapter