刷新listview项目上的片段单击

时间:2013-07-01 05:01:37

标签: java android

我是碎片的新手,并且一直试图解决这个问题。我想在listview点击上更新我的片段,并且与此极为相似: Fragment in fragment do not refresh 其中左侧是列表视图,右侧是选项卡式UI。这是我的一个片段:

public static class DescriptionFragment extends Fragment {

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


        View rootView = inflater.inflate(R.layout.fragment_section_description, container, false);

        text = ((TextView) rootView.findViewById(R.id.description));

        text.setText(Html.fromHtml(description_text));


        return rootView;
    }

如何调用此片段(来自主要活动内部)以便更新onCreateView并更新textview“text”?非常感谢任何帮助

注意:列表视图不是片段,只是平板电脑的单独布局文件。我唯一的片段(例如DescriptionFragment)用于标签

3 个答案:

答案 0 :(得分:0)

我假设你想要显示listview,点击listitem,值应该更新:

  

如何调用此fragement(来自主要活动内部)以便更新onCreateView并更新textview“text”?

要在main活动中调用片段,你必须在side main xml文件中定义片段,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/frag_series"
android:layout_width="200dip"
android:layout_height="match_parent"
android:layout_marginTop="?android:attr/actionBarSize"
class="com.example.demo_fragment.MyListFragment" />
</LinearLayout>

现在扩展Listframent,然后编写代码来填充listview数据,然后点击下面的点击事件

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
DetailFragment frag = (DetailFragment) getFragmentManager().findFragmentById(R.id.frag_capt);
if (frag != null && frag.isInLayout()) {
frag.setText(getCapt(item));
}
}

然后检查条件并更新您的vaules,如下所示:

private String getCapt(String ship) {
if (ship.toLowerCase().contains("android")) {
return "Andy Rubin";
}
if (ship.toLowerCase().contains("IOS")) {
return "Steve Jobs";
}
return "???";
}

答案 1 :(得分:0)

这是你可以调用你的片段的方式。

DescriptionFragment  descriptionFragment = (DescriptionFragment ) 
getFragmentManager().findFragmentById(R.id.yourFragmentId);

答案 2 :(得分:0)

你必须创建一个像这样的监听器Interface

public interface FragmentTransactionListener {
    public void updateFragment(/*some attributes*/);
}

然后,您必须在Fragment上实施界面并覆盖updateFragment方法。在此方法中,您可以添加在单击列表项时将在Fragment中执行的代码。像这样的东西

public static class DescriptionFragment extends Fragment implements FragmentTransactionListener {

...

    @Override
    public void updateFragment(/*some attributes*/) {
        //do some stuff
    }

...

FragmentActivity中创建片段时,获取此侦听器的实例,并在单击列表项时调用它。与此代码类似的东西

FragmentTransactionListener listener = instance of your fragment;

//in your list item you then call this
listener.updateFragment(/*some attributes*/);

希望这会有所帮助