Fragmento di partenza da ArrayAdapter

Ho 4 frammenti che sto usando per la mia applicazione. Uno dei miei frammenti (ChatList) ha un ListView che utilizza una scheda che estende ArrayAdapter. Ora, nella mia class ArrayAdapter, quando viene cliccata una certa row, voglio aprire il mio frammento CurrentChat. Come sarei andata a fare questo? Per quanto ho visto, sembra che i frammenti siano accessibili solo dalle attività e dagli altri frammenti.

ChatList.java

  • Come posso individuare l'utente premendo il tasto HOME nella mia attività?
  • GSON si aspettava BEGIN_ARRAY ma era BEGIN_OBJECT
  • Utilizzo di HttpGet su Android
  • L'installazione di Android non è rioutput dopo l'aggiunta di Crosswalk a Ionic
  • Visualizzazione del menu principale / home screen dell'applicazione quando si torna all'app dopo aver avviato un'attività / intenti esterni
  • La transizione degli elementi condivisi nidificati non parte dal luogo previsto
  • package com.example.jj.fragments; import android.database.DataSetObserver; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ListView; /** * Created by jj on 11/23/2015. */ public class ChatList extends Fragment { public static final String ARG_PAGE = "ARG_PAGE"; ListView chatListLV; ChatListAdapter adapter; public static ChatList newInstance(int page) { Bundle args = new Bundle(); args.putInt(ARG_PAGE, page); ChatList fragment = new ChatList(); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } // Inflate the fragment layout we defined above for this fragment // Set the associated text for the title @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.chatlist, container, false); chatListLV = (ListView) view.findViewById(R.id.chatLV); adapter = new ChatListAdapter(getContext(),R.layout.single_chatlist_row); chatListLV.setAdapter(adapter); chatListLV.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); adapter.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { super.onChanged(); chatListLV.setSelection(adapter.getCount() - 1); } }); fillChatList(); return view; } public void fillChatList(){ DBHelper db = new DBHelper(getActivity()); db.getChatList(adapter); db.close(); } } 

    ChatListAdapter.java

     package com.example.jj.fragments; /** * Created by jj on 11/28/2015. */ import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import io.socket.client.IO; import io.socket.client.Socket; public class ChatListAdapter extends ArrayAdapter<ChatListDataProvider>{ public Socket mSocket; { try { mSocket = IO.socket("https://great-sarodh.c9.io/"); } catch (URISyntaxException e){} } private static final String TAG = "ChatListAdapter" ; public List<ChatListDataProvider> chat_list = new ArrayList<ChatListDataProvider>(); private TextView dateTV; private TextView messageTV; private TextView timeTV; private TextView sideTV; private ImageView PictureIV; private String gcmID; private String androidID; private String roomhash; private int side; CurrentChat CCFrag; int type; Context CTX; public ChatListAdapter(Context context, int resource) { super(context, resource); CTX = context; } @Override public void add(ChatListDataProvider object){ chat_list.add(object); super.add(object); } @Override public int getCount() { return chat_list.size(); } @Override public ChatListDataProvider getItem(int position) { return chat_list.get(position); } @Override public View getView(final int position, View convertView, ViewGroup parent) { if(convertView == null){ LayoutInflater inflator = (LayoutInflater) CTX.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflator.inflate(R.layout.single_chatlist_row,parent,false); } sideTV = (TextView) convertView.findViewById(R.id.sideTV); messageTV = (TextView) convertView.findViewById(R.id.lastmsgTV); timeTV = (TextView) convertView.findViewById(R.id.timeTV); ChatListDataProvider provider = chat_list.get(position); gcmID = provider.gcmID; messageTV.setText(provider.lastMsg); timeTV.setText(provider.time); side = provider.side; if(side == 0){ sideTV.setText("Who?:"); } else if(side == 1){ sideTV.setText("You:"); } roomhash = provider.roomID; convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stuck Log.d(TAG, "JOINING ROOMID" + chat_list.get(position).roomID); mSocket.emit("CreateRoom", chat_list.get(position).roomID, chat_list.get(position).gcmID); //THE CODE TO OPEN CURRENTCHAT FRAGMENTS SHOULD GO HERE } }); notifyDataSetChanged(); return convertView; } } 

    ChatListDataProvider.java

     package com.example.jj.fragments; import android.support.v4.app.FragmentActivity; /** * Created by jj on 11/28/2015. */ public class ChatListDataProvider extends FragmentActivity{ public String roomID; public String gcmID; public String lastMsg; public String date; public String time; public int side; private ChatAdapter chat; public ChatListDataProvider (String gcmID) { super(); } public ChatListDataProvider (String roomID, String gcmID, String lastMsg, int side, String time, String date) { this.roomID = roomID; this.gcmID = gcmID; this.lastMsg = lastMsg; this.side = side; this.date = date; } } 

    CurrentChat.java

     package com.example.jj.fragments; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class CurrentChat extends Fragment { public static final String ARG_PAGE = "ARG_PAGE"; public static CurrentChat newInstance(int page) { Bundle args = new Bundle(); args.putInt(ARG_PAGE, page); CurrentChat fragment = new CurrentChat(); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.currentchat, container, false); return view; } } 

  • Numerazione dell'image salvata dalla risorsa app per la scheda SD
  • Come gonfiare Android NavigationView con un altro menu dynamicmente durante l'onClick?
  • Google App Engine - scala automatica con sempre in esame?
  • L'applicazione non si avvia dall'avvio del dispositivo
  • Qual è la differenza tra ID dispositivo Android e token dispositivo?
  • Selettore di colore con utilizzo in android
  • One Solution collect form web for “Fragmento di partenza da ArrayAdapter”

    Per fare ciò puoi eseguire una function all'interno dell'adattatore che passa il context corrente di attività e il layout del contenitore / fotogramma come questo.

     public void changeFragmentFromAdapter(Activity act , int layoutid) { YourFragment fragmentToPopulate = new YourFragment(); FragmentManager frgManager = act.getFragmentManager(); FragmentTransaction fgTransation = frgManager.beginTransaction(); FgTransation.replace(layoutid, fragmentToPopulate).commit(); } 

    Incollare questa function nel tuo ChatListAdapter. ora nella tua class ChatList aggiungi itemclicklistener alla tua list

      chatListLV.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub //Here Add call change function adapter.changeFragmentFromAdapter(getActivity() , R.layout.chatList); } } 

    suppongo R.layout.chatList è il tuo contenitore per 3 frammenti in MainActivity. Ora chiamate questa function dalla tua attività di frammento.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.