2013-09-26 2 views
0

Я просто хочу знать, возможно ли это с первого раза. Я создал custom listView based on the tutorial I read from Sai Geetha. Ну, он отлично работает на моем приложении, за исключением того, что ему нужно расширить ListActivity вместо FragmentActivity. Теперь мне сложно настроить и добавить диалог для этого, так как мне нужно применить диалог фрагмента, и я не могу использовать getFragmentManager(), так как я не работаю с FragmentActivity. Есть ли другой способ сделать это, не жертвуя ListActivity? Благодаря!Использование getFragmentManager в ListActivity

Вот мой код до сих пор

XML:

conversation_list_view

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <ListView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@id/android:list" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="10dp" 
      android:layout_marginBottom="5dp" 
      android:layout_marginTop="20dp"/> 
</LinearLayout> 

group_screen

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@color/white"> 

    <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="48dp" 
      android:background="@drawable/action_bar_separator" 
      android:id="@+id/relativeLayout"> 

     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:text="Group Name" 
       android:id="@+id/txt_group_name" 
       android:layout_centerVertical="true" 
       android:layout_centerHorizontal="true" 
       android:textColor="@color/dark_gray" 
       android:shadowColor="@color/dark_shadow" 
       android:shadowRadius="1" 
       android:shadowDy="1"/> 

     <Button 
       android:layout_width="32dp" 
       android:layout_height="32dp" 
       android:id="@+id/btn_back" 
       android:background="@drawable/btn_navigate_back" 
       android:layout_centerVertical="true" 
       android:layout_alignParentLeft="true"/> 

     <Button 
       android:layout_width="32dp" 
       android:layout_height="32dp" 
       android:id="@+id/btn_information" 
       android:background="@drawable/btn_information" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentRight="true" 
       android:layout_marginTop="10dp" 
       android:layout_marginRight="10dp"/> 

    </RelativeLayout> 

    <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 

     <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Conversations" 
       android:id="@+id/textView2" 
       android:textColor="@color/holo_light_blue" 
       android:layout_marginLeft="15dp" 
       android:layout_marginTop="10dp"/> 

     <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="340dp" 
       > 

      <fragment 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:name="com.mark.exercise.ListViewFragment" 
        android:id="@+id/fragment"/> 
     </LinearLayout> 

     <Button 
       android:layout_width="match_parent" 
       android:layout_height="42dp" 
       android:text="Ask something" 
       android:id="@+id/btn_ask_question" 
       android:layout_marginRight="10dp" 
       android:layout_marginLeft="10dp" 
       android:textSize="15dp"/> 

    </LinearLayout> 
</LinearLayout> 

Java

package com.mark.exercise; 


import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 


/** 
* Created by pc on 9/24/13. 
*/ 
public class GroupActivity extends FragmentActivity { 

    Button information, back, new_topic; 
    ListView conversations; 
    TextView group_name; 
    String name, group_description, group_administrator,image_id; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.group_screen); 
     Intent intent = getIntent(); 

     name = intent.getStringExtra("group_name"); 
     group_description = intent.getStringExtra("group_description"); 
     group_administrator = intent.getStringExtra("group_administrator"); 
     image_id = intent.getStringExtra("image_id"); 

     information = (Button)findViewById(R.id.btn_information); 
     back = (Button)findViewById(R.id.btn_back); 
     new_topic = (Button)findViewById(R.id.btn_ask_question); 
     group_name = (TextView)findViewById(R.id.txt_group_name); 


     group_name.setText(name); 


     information.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(GroupActivity.this, GroupInformationActivity.class); 
       intent.putExtra("group_name",name); 
       intent.putExtra("group_description",group_description); 
       intent.putExtra("group_administrator",group_administrator); 
       intent.putExtra("image_id",image_id); 
       startActivity(intent); 
       GroupActivity.this.overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right); 
      } 
     }); 

     new_topic.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       showCreateNewTopicDialog(); 
      } 
     }); 


     back.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       onBackPressed(); 
      } 
     }); 
    } 



    private void showCreateNewTopicDialog() { 
     FragmentManager fm = getSupportFragmentManager(); 
     DialogFragmentCreateGroup createGroup = new DialogFragmentCreateGroup(); 
     createGroup.show(fm, "create_group"); 
    } 

    @Override 
    public void onBackPressed(){ 
     super.onBackPressed(); 
     overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left); 
    } 


} 

Список Фрагмент

package com.mark.exercise; 


import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Random; 

/** 
* Created by pc on 9/27/13. 
*/ 

public class ListViewFragment extends ListFragment { 

    final ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>(); 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.conversations_list_view, 
       container, false); 

     setListView set_list = new setListView(); 
     set_list.start(); 

     return view; 
    } 


    public void onListItemClick(ListView l, View v, int position, long id) { 
     //super.onListItemClick(l, v, position, id); 
     Intent intent = new Intent(getActivity(), ConversationActivity.class); 
     startActivity(intent); 
     getActivity().overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right); 
    } 

    private class setListView extends Thread { 
     public void run() { 
      getActivity().runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        setConversations(); 
       } 
      }); 
     } 
    } 

    private void setConversations(){ 
     list.clear(); 
     SimpleAdapter adapter = new SimpleAdapter(
       getActivity(), 
       list, 
       R.layout.custom_list_main_conversations, 
       new String[] {"message","date", "reply_count", "stars_count"}, 
       new int[] {R.id.txt_conversation_message,R.id.txt_topic_date, R.id.txt_no_of_reply, R.id.txt_no_of_stars} 
     ); 

     for(int ctr=0;ctr<=5;ctr++){ 
      Random randomGenerator = new Random(); 
      HashMap<String,String> item_list = new HashMap<String,String>(); 
      item_list.put("message", "This is the conversation number "+(ctr+1)+" and this topic is just a dummy data."); 
      item_list.put("date", "0"+(ctr+1)+"/0"+(ctr+2)+"/2013 "+(ctr+1)+":00:am"); 
      item_list.put("reply_count", String.valueOf(ctr+randomGenerator.nextInt(10))); 
      item_list.put("stars_count", String.valueOf(ctr+randomGenerator.nextInt(10))); 
      list.add(item_list); 
     } 

     android.app.ListFragment lf = new android.app.ListFragment(); 
     lf.setListAdapter(adapter); 
    } 

} 

ответ

1

Вы можете использовать ListFragment внутри FragmentActivity вместо использования ListActivity.

+0

Привет jaibatrik, я не знаю, как использовать фрагмент списка и как его реализовать. Можете ли вы дать мне некоторый намек на то, как? Я добавил код для моего приложения, надеюсь, вы сможете проверить его и дать мне несколько советов. Благодаря! – KaHeL

+0

Я не уверен, что вы знакомы с концепцией самого «Фрагмента». Если вы этого не сделаете, вы можете посетить сайт разработчика Android здесь - http://developer.android.com/guide/components/fragments.html – jaibatrik

+0

И вот простая демонстрация о том, как использовать 'ListFragment' - http: // android-er.blogspot.in/2012/01/listfragment.html – jaibatrik

Смежные вопросы