Android Studio 中的 ListFragment
Posted
技术标签:
【中文标题】Android Studio 中的 ListFragment【英文标题】:ListFragment in Android Studio 【发布时间】:2015-05-20 21:09:26 【问题描述】:我正在浏览在线教程,试图了解 ListFragment 的工作原理以及我们如何使用它。
教程有点模糊,我无法理解它是如何工作的,也无法在 android Studio 上实现 ListFragment。
谁能提供有关 ListFragment 工作原理以及如何在 Android Studio 上实现它的详细信息。
另外,如何在不使用 ListFragment 的情况下在片段内定义 ListView?
【问题讨论】:
【参考方案1】:关于最后一个问题:
另外,如何在不使用 ListFragment 的情况下在片段内定义 ListView?
我有可能有帮助的代码。
这里是 MainActivity.java,其中包括一个 Fragment:
public class MainActivity extends ActionBarActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null)
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new MusicFragment())
.commit();
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
@Override
public boolean onOptionsItemSelected(MenuItem item)
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings)
Intent i = new Intent(this, SettingsActivity.class);
startActivity(i);
return true;
return super.onOptionsItemSelected(item);
/**
* A placeholder fragment containing a simple view.
*/
public static class MusicFragment extends Fragment
ListView list;
String[] text = "House of Whispers","Hot Lunch", "Number of the Beast", "Killers";
Integer[] imageId = R.drawable.hotlunch1, R.drawable.hotlunch2,
R.drawable.ironmaiden1, R.drawable.ironmaiden2 ;
public MusicFragment()
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
list = (ListView) rootView.findViewById(R.id.ListView);
CustomAdapter adapter = new CustomAdapter(getActivity() , text, imageId );
list.setAdapter(adapter);
Log.d("CustomAdapter", "MusicFragment onCreateView successful");
return rootView;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
fragment_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_
android:layout_ android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity$PlaceholderFragment">
<ListView
android:id="@+id/ListView"
android:layout_
android:layout_ >
</ListView>
</RelativeLayout>
编辑:根据要求,这里是 CustomAdapter:
public class CustomAdapter extends ArrayAdapter<String>
private final Activity _context;
private final String[] _text;
private final Integer[] _imageId;
public CustomAdapter(Activity context, String[] text, Integer[] imageId)
super(context, R.layout.list_item, text);
this._context = context;
this._text = text;
this._imageId = imageId;
@Override
public View getView(int position, View convertView, ViewGroup parent)
LayoutInflater inflater = _context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.list_item, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.text);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
txtTitle.setText(_text[position]);
imageView.setImageResource(_imageId[position]);
return rowView;
【讨论】:
MusicFragment 类是否创建在项目中声明的单独 Fragment 中?还是它是 MainActivity 的一部分? 能否提供 cmets 中“自定义适配器”的代码? @Arjun Issar,看看更新后的答案,我还包含了完整项目的链接。本例中的 Fragment 位于 MainActivity 类中。【参考方案2】:ListFragment 与 ListActivity 相同 - 它只是一个 Fragment,它扩展了 List 方法。您可以只添加包含 ListView 的 Fragment 并实现列表方法所需的所有方法,例如在 Activity 中。 你可以找到一个很好的教程here,它解释了如何使用它。
【讨论】:
以上是关于Android Studio 中的 ListFragment的主要内容,如果未能解决你的问题,请参考以下文章
大神, 我的android studio中的虚拟机怎么联网?
无法按照 Google“入门”页面中的说明在 Android Studio 中添加地图; Android Studio 报错