gpt4 book ai didi

android - fragment 中 ListView 的 setOnItemClickListener

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:48 24 4
gpt4 key购买 nike

我在点击 fragment 中的 ListView 项目时遇到问题。我编写了代码,以便 fragment 指向所有内容的布局文件,并且布局的 2 个内部是 ListView,它从 strings.xml 中的字符串数组中的项目中检索它们的条目。由于我编写代码的方式,在我的案例中,我找不到为每个 ListView 项目实现 setOnItemClickListener 的方法。

主 Activity .java

package com.example.test_app;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.Menu;

public class MainActivity extends FragmentActivity{
ViewPager ViewPager = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager= (ViewPager) findViewById(R.id.pager);
FragmentManager fragmentManager=getSupportFragmentManager();
ViewPager.setAdapter(new AdapterActivity(fragmentManager));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

AdapterActivity.java

package com.example.test_app;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class AdapterActivity extends FragmentStatePagerAdapter{
public AdapterActivity(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int i){
Fragment fragment=null;
if(i==0){
fragment=new HomeFragment();
}
if(i==1){
fragment=new CommunityFragment();
}
if(i==2){
fragment=new ResourcesFragment();
}
return fragment;
}

@Override
public int getCount(){
return 3;
}

@Override
public CharSequence getPageTitle(int position){
if(position==0){
return "Home Page";
}
if(position==1){
return "Community";
}
if(position==2){
return "Resources";
}
return null;
}
}
class HomeFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
return inflater.inflate(R.layout.home_fragment, container, false);
}
}
class CommunityFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
return inflater.inflate(R.layout.community_fragment, container, false);
}
}
class ResourcesFragment extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
return inflater.inflate(R.layout.resources_fragment, container, false);
}
}

然后在resources_fragment.xml布局中,有一个ListView

<ListView
android:id="@+id/resourcesListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/categories" >
</ListView>

它从 strings.xml 中获取条目

<string-array name="categories">
<item>Category 1</item>
<item>Category 2</item>
<item>Category 3</item>
<item>Category 4</item>
<item>Category 5</item>
<item>Category 6</item>
<item>Category 7</item>
<item>Category 8</item>
</string-array>

我用了this link to create my ListView ,但 setOnItemClickListener 对我不起作用。我还能如何将每个 ListView 项连接到其他 Activity ?

最佳答案

添加 ListView.SetOnItemClickListener 的地方是在您的 fragment 创建代码中,在您填充布局之后。使用 findViewById 找到您的 ListView,并添加您的 setOnItemClick 监听器。

class ResourcesFragment extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

View view = inflater.inflate(R.layout.resources_fragment, container, false);
ListView lv = (ListView) view.findViewById(R.id.mylistviewid);

lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
// TODO Auto-generated method stub

String category = categories[position];
Class activityClass = lookupActivityClass_byName(category);
//You could lookup by position, but "name" is more general

Intent intent = new Intent(getActivity(), activityClass);
startActivity(intent);


}
});

return view;

}

关于android - fragment 中 ListView 的 setOnItemClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22164359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com