У меня возникли проблемы с щелчком на элементах ListView во фрагментах. Я написал код, чтобы фрагменты указывали на файлы макета для всего и внутри 2 макетов были ListViews, которые извлекают свои записи из элементов в массив строк в файле strings.xml. Я не мог найти способ реализовать setOnItemClickListener для каждого элемента ListView в моем случае из-за того, как я написал код.setOnItemClickListener для ListView во фрагменте
MainActivity.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 не будет работать для меня. Как еще я могу подключить к каждому элементу списка другие действия?
Большое спасибо! Я только начал изучать развитие Android, поэтому это немного сложно понять. Однако я не совсем уверен, как будет работать содержимое onItemClick. Я хочу, чтобы каждый элемент списка запускал новое действие при нажатии, поэтому я создам класс для каждой категории, и каждый класс начнет новое действие. Как написать код внутри onItemClick для каждого элемента списка? – apoorvk
Код, который я добавил в onItemClick, содержит схему того, что вам нужно сделать. – NameSpace
Я думаю, что я понял, я должен добавить String Array до String category = categories [position]? Пример: Строковые категории [] = {«Категория 1», «Категория 2», «Категория 3», «Категория 4», «Категория 5», «Категория 6», «Категория 7», «Категория 8»}; Но lookupActivityClass_byName по-прежнему «не определено для типа new AdapterView.OnItemClickListener() {} – apoorvk