1

一个片段中有两个片段。我在左右片段中有一个列表,显示了ListFragment中的ListView。如果我单击 ListView 中的列表,我需要显示另一个视图来代替 ListView,但左侧片段仍然存在。

在 onclick 事件中,我正在做意图,但整个视图正在改变。相反,我只需要更改列表视图。

public class FriendsFragment  extends ListFragment{
  public static String[] friendsaddoptions=new String[]{
    "Fox User","FaceBook","Email","Twiter","SMS"
  };
  private Intent listIntent = null;
  ListView listview;
  Friends_Names_List_Adapter friendsnameslistadapter;
  JSONArray dataJsonObject;
  Button add;
  Button back;
  Game_Sections_Details_Adapter  GameSectionsDetails;
  View view;
  Context context = getActivity();
  @Override
  public View onCreateView(LayoutInflater inflater,  final ViewGroup container, Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.friends_list, container,false);
    listview=(ListView)view.findViewById(android.R.id.list);
    add=(Button) view.findViewById(R.id.button_add);
    back=(Button)view. findViewById(R.id.button_back);
    back.setVisibility(View.INVISIBLE);
    FriendsFragmentData dataobserver=new FriendsFragmentData();
    ServerManager.getInstance().addObserver(dataobserver);
    ServerManager.getInstance().readLoopForFriends_Names_List(AppConstances.Friends_Names_List);
    if(friendsnameslistadapter==null)
      friendsnameslistadapter=new Friends_Names_List_Adapter(getActivity(), new JSONArray());
    listview.setAdapter(friendsnameslistadapter);
    add.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) { /*Intent in=new
      Intent(getActivity().getBaseContext(), FriendsNamesAddActivity.class);
      startActivity(in);*/
      ArrayAdapter< String> adapter=new ArrayAdapter<String>(getActivity().getBaseContext(),
        R.layout.friends_add_listitem,R.id.friends_add_option,friendsaddoptions);
      listview.setAdapter(adapter);
      if(adapter!=null)
      back.setVisibility(View.VISIBLE);
      listview.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
          Intent intent = new Intent(getActivity().getBaseContext(),FoxUserActivity.class);
          startActivity(intent);
        }
      });
      if(adapter!=null) {
        add.setVisibility(View.INVISIBLE);
      }
    }
  });
  back.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
      listview.setAdapter(friendsnameslistadapter);
      add.setVisibility(View.VISIBLE);
      back.setVisibility(View.INVISIBLE);
    }
  });
  return view;
}

而这个类在点击后显示“

public class FoxUserActivity  extends FragmentActivity{
  public static TabHost tHost;
  Button add,back;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.foxuser);
    add=(Button) findViewById(R.id.button_add);
    back=(Button) findViewById(R.id.button_back);
    add.setVisibility(View.INVISIBLE);
    back.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        onBackPressed();
      }
    });
  }
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_game, menu);
    return true;
  }}

我希望有一个人可以帮助我。提前致谢。

4

1 回答 1

0

哦。你的代码很糟糕。我不认为有人想读它。无论如何,我只是读了它。我看到您使用一个 ListView 和 2 个适配器,如果您使用相互替换的适配器来更改您的 ListView。我不认为这不好。取而代之的是,您应该使用 2 个单独的 ListFragment 并且可以将一个替换为另一个。如果你不知道该怎么做。请阅读这篇文章

于 2012-11-21T07:02:36.467 回答