Android onListItemClick不在片段中工作
onListItemClick不工作。我试图存储在listview中选择的值,并将其传递给mainactivity 我如何获取所选项目位置并将其传递给主要活动 请提出建议并感谢您的帮助 这是我的密码:Android onListItemClick不在片段中工作,android,android-fragments,Android,Android Fragments,onListItemClick不工作。我试图存储在listview中选择的值,并将其传递给mainactivity 我如何获取所选项目位置并将其传递给主要活动 请提出建议并感谢您的帮助 这是我的密码: public static class ListViewFragment extends Fragment { public static final String ARG_PLANET_NUMBER = "planet_number"; //FragmentActivity li
public static class ListViewFragment extends Fragment {
public static final String ARG_PLANET_NUMBER = "planet_number";
//FragmentActivity listener;
private ListView myListView;
private EditText editsearch;
private CheckBox selectAll;
private ArrayList<String> SelectedFilter1;
private ArrayList<String> CheckedFitlers;
ArrayAdapter<String> adapter_list;
public ListViewFragment() {
// Empty constructor required for fragment subclasses
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
SelectedFilter1=getArguments().getStringArrayList("ArrayList");
adapter_list = new ArrayAdapter<String>(this.getActivity(),
android.R.layout.simple_list_item_multiple_choice,SelectedFilter1);
adapter_list.notifyDataSetChanged();
myListView.setAdapter(adapter_list);
myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
myListView.setTextFilterEnabled(true);
editsearch.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
String text = editsearch.getText().toString().toLowerCase(Locale.getDefault());
adapter_list.getFilter().filter(text);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
});
selectAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
Log.i("CheckBOX","Is Checked:"+isChecked);
if(isChecked)
{
for ( int i=0; i< myListView.getCount(); i++ )
myListView.setItemChecked(i, true);
}else
{
for ( int i=0; i< myListView.getCount(); i++ )
myListView.setItemChecked(i, false);
}
}
}
);
}
public void onListItemClick(ListView l, View v, int position, long id) {
//showDetails(position);
Log.i("Item Clicked in the Listview","Item Clicked in the listview: "+position);
//Toast.makeText(getActivity(), "Item Clicked in the listview: "+position, 3000).show();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_list_view, container, false);
myListView=(ListView) rootView.findViewById(R.id.listView_brand);
editsearch = (EditText) rootView.findViewById(R.id.search);
selectAll=(CheckBox) rootView.findViewById(R.id.checkBox1);
//myListView.setFocusable(false);
// myListView.setClickable(false);
selectAll.setFocusable(false);
// rootView.setFocusable(false)
return rootView;
}
}
公共静态类ListViewFragment扩展了片段{
公共静态最终字符串ARG\u PLANET\u NUMBER=“PLANET\u NUMBER”;
//碎片活动监听器;
私有列表视图myListView;
私人编辑文本编辑搜索;
私有复选框selectAll;
private ArrayList SelectedFilter1;
私人ArrayList格子家具;
阵列适配器列表;
公共ListViewFragment(){
//片段子类需要空构造函数
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
SelectedFilter1=getArguments().getStringArrayList(“ArrayList”);
adapter_list=new ArrayAdapter(this.getActivity(),
android.R.layout.simple\u list\u item\u多选,SelectedFilter1);
适配器列表。notifyDataSetChanged();
myListView.setAdapter(适配器列表);
myListView.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
myListView.setTextFilterEnabled(true);
editsearch.addTextChangedListener(新的TextWatcher(){
@凌驾
public void PostTextChanged(可编辑arg0){
//TODO自动生成的方法存根
String text=editsearch.getText().toString().toLowerCase(Locale.getDefault());
适配器\u list.getFilter().filter(文本);
}
@凌驾
更改前的公共无效(字符序列arg0,int arg1,
整数arg2,整数arg3){
//TODO自动生成的方法存根
}
@凌驾
public void onTextChanged(字符序列arg0、int arg1、int arg2、,
int arg3){
//TODO自动生成的方法存根
}
});
选择All.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
Log.i(“复选框”,“已选中:+isChecked”);
如果(已检查)
{
对于(int i=0;i
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="test.dsi.decathnavigation.Brand_list" >
<ListView
android:id="@+id/listView_brand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/search"
android:fastScrollAlwaysVisible="false"
android:fastScrollEnabled="false"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollingCache="true"
android:smoothScrollbar="false" >
</ListView>
<EditText
android:id="@+id/search"
android:layout_width="450dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/listView_brand"
android:layout_alignParentTop="true"
android:ems="10"
android:hint="Type to search" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/search"
android:text="Select All" />
</RelativeLayout>
onListItemClick不在片段中工作
因为您没有在ListViewFragment片段中实现OnItemClickListener
,而是覆盖了OnItemListener
的onListItemClick
按如下方式操作:
myListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0,
View arg1, int position, long arg3)
{
Log.i("Item Clicked in the Listview","Item Clicked in the listview: "+position);
}
});
myListView.setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0,
视图arg1,内部位置,长arg3)
{
Log.i(“在Listview中单击的项目”,“在Listview中单击的项目:+位置”);
}
});
您需要为列表视图添加一个OnItemClickListener
:
myListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//your code over here
}
});
myListView.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//你的密码在这里
}
});
希望这有帮助。我将尝试使用我的示例来帮助您:
在包含ListView的活动中声明ListView:
public class RankingActivity extends Activity {
ListView bestPlayersList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranking);
mContext=this;
bestPlayersList = (ListView) findViewById(R.id.bestPlayersListView);
}
bestPlayersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final CheckedTextView item = (CheckedTextView) view;
if (item.isChecked())
{
//..do some action..for example get item text: item.getText()
}
}
});
}
公共类RankingActivity扩展活动{
列表视图最佳玩家列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranking);
mContext=这个;
BestPlayerList=(ListView)findViewById(R.id.BestPlayerListView);
}
BestPlayerList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
最终CheckedTextView项=(CheckedTextView)视图;
如果(item.isChecked())
{
//…执行一些操作..例如获取项文本:item.getText()
}
}
});
}
它对我有用;) 您是否尝试了myListView.setOnItemClickListener(新建OnItemClickListener(){public void onItemClick(AdapterView父级,视图视图,int位置,长id){…}
?不,我没有……谢谢!!现在工作正常。:)酷。作为答案添加。愉快的编码。你能帮我建议如何将选中的项目传递给主要活动吗?@PramodK,