2017-05-10 10 views
0

Ich bekomme Daten von MySQL-Datenbank in JSON-Form und zeigt in benutzerdefinierten Liste view.list Ansicht ist sehr lang. Jetzt möchte ich, dass, wenn ich auf Knopf in der Haupttätigkeit klicke, es mich zu der Listenansicht zu derselben Position umadressiere, wo ich verlassen habe. danke im voraus.wie Listenansicht Zustand zu speichern und zurück zu diesem Zustand

public class ShowParahDetail extends AppCompatActivity { 
ProgressDialog pd; 
CustomAdapter c; 
ArrayList<Ayah_textAR> ar_ayahAR; 
ArrayList<Ayah_textTR> ar_ayah_TR; 
JazzyListView lv; 
String intent_parah_ID; 
String intent_parahName; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_show_parah_detail); 
    intent_parah_ID=getIntent().getExtras().getString("parahID"); 
    intent_parahName=getIntent().getExtras().getString("parahName"); 
    setTitle(intent_parahName); 
    pd = new ProgressDialog(ShowParahDetail.this, R.style.pdtheme); 
    pd.setCancelable(false); 
    pd.setProgressStyle(android.R.style.Widget_ProgressBar_Small); 
    pd.show(); 
    lv= (JazzyListView) findViewById(R.id.lvparahDetail); 

    ar_ayahAR = new ArrayList<>(); 
    ar_ayah_TR = new ArrayList<>(); 
    ShowDataAR(); 
    ShowTranslationUR(); 
} 

private void ShowTranslationUR() { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      String RecievedString = ""; 
      HashMap<String, String> params = new HashMap<String, String>(); 
      params.put("parahid", intent_parah_ID); 
      Network network = new Network("showParahTranslationUR.php", params); 

      try { 
       try { 
        Thread.sleep(500); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       RecievedString = network.ToRecieveDataFromWeb(); 
       JsonParsing jsonparsing = new JsonParsing(RecievedString); 
       ArrayList<HashMap<String, String>> convertedarraydata = jsonparsing.ParsejsonArray(RecievedString); 
       for (int i = 0; i < convertedarraydata.size(); i++) { 
        HashMap<String, String> positionHashmap; 
        positionHashmap = convertedarraydata.get(i); 

        String str_ayahText = positionHashmap.get("verseText"); 
        String str_verseID = positionHashmap.get("verse_id"); 
        String str_surahID = positionHashmap.get("surah_id"); 


        Ayah_textTR ayahTR = new Ayah_textTR(); 
        ayahTR.ayah_textTR = str_ayahText; 
        ayahTR.verse_id = str_verseID; 
        ayahTR.surah_id = str_surahID; 
        ar_ayah_TR.add(ayahTR); 
       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 
} 

private void ShowDataAR() { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      String RecievedString = ""; 
      HashMap<String, String> params = new HashMap<String, String>(); 
      params.put("parahid", intent_parah_ID); 
      Network network = new Network("showParahDetails.php", params); 

      try { 
       try { 
        Thread.sleep(500); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       RecievedString = network.ToRecieveDataFromWeb(); 
       JsonParsing jsonparsing = new JsonParsing(RecievedString); 
       ArrayList<HashMap<String, String>> convertedarraydata = jsonparsing.ParsejsonArray(RecievedString); 
       for (int i = 0; i < convertedarraydata.size(); i++) { 
        HashMap<String, String> positionHashmap; 
        positionHashmap = convertedarraydata.get(i); 
        String str_ayahID = positionHashmap.get("verse_id"); 
        String str_ayahText = positionHashmap.get("verseText"); 

        Ayah_textAR ayahText = new Ayah_textAR(); 
        ayahText.ayah_id = str_ayahID; 
        ayahText.ayah_textAR = str_ayahText; 
        ar_ayahAR.add(ayahText); 
       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       if (ShowParahDetail.this == null) 
        return; 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Parcelable state = lv.onSaveInstanceState(); 
         lv.onRestoreInstanceState(state); 
         c = new CustomAdapter(ShowParahDetail.this, R.layout.cstm_parah, R.id.tv_parahNAME, ar_ayahAR); 
         lv.setAdapter(c); 
         if(pd!=null){ 
          pd.dismiss(); 
          pd = null; 
         } 
        } 
       }); 
      } 
     } 
    }).start(); 
} 


class CustomAdapter extends ArrayAdapter<Ayah_textAR> { 
    public CustomAdapter(Context context, int resource, int textViewResourceId, ArrayList<Ayah_textAR> objects) { 
     super(context, resource, textViewResourceId, objects); 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View v = inflater.inflate(R.layout.cstm_ayah, parent, false); 

     final TextView tv_ayah_text = (TextView) v.findViewById(R.id.tv_ayahText); 
     final TextView tv_ayahTR = (TextView) v.findViewById(R.id.tv_ayahTR); 

     try { 
      Ayah_textAR ayah = ar_ayahAR.get(position); 
      tv_ayah_text.setText(ayah.ayah_id + " : " + ayah.ayah_textAR); 
      Ayah_textTR parahTR = ar_ayah_TR.get(position); 
      tv_ayahTR.setText(parahTR.ayah_textTR); 
     }catch (Exception e){ 
      notifyDataSetChanged(); 
     } 

     }); 
     return v; 
    } 
} 
public class Ayah_textAR { 
    String ayah_id; 
    String ayah_textAR; 
} 
public class Ayah_textTR { 
    String verse_id; 
    String ayah_textTR; 
    String surah_id; 
} 



@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (pd != null) { 
     pd.dismiss(); 
     pd = null; 
    } 
} 

}

+0

beenden Sie Ihre Listenaktivität nicht, wenn Sie andere Aktivitäten planen. Und wenn Sie Aktivitäten wieder listen möchten, rufen Sie einfach BackPressed() auf, wenn Sie auf die Schaltfläche klicken. – JavadKhan

+0

Ja, @JavadKhan hat Recht, Beenden Sie einfach nicht Ihre Listenaktivität. –

+0

Ich habe drei Aktivitäten A, B und C. Ich habe Listenansicht in B-Aktivität und auch in C-Aktivität. Wenn ich die Taste in A activityB Aktivität gedrückt, öffnet und lade Daten in der Listenansicht und auf Element klicken C Aktivität öffnet und laden Sie Daten in der Listenansicht. Ich will das, wenn ich in C-Aktivität auf der 30. Position in listview bin und gehe zurück zu A-Aktivität jetzt, wenn ich die Fortsetzen-Taste drücke, will ich die C-Aktivität zeigen 30. Position –

Antwort

0

Sie haben drei Aktivitäten, A, B und C. Starten Sie Ihre Aktivität B mit Absicht. Und starte auch deine Aktivität C mit Absicht. Wenn Sie dann Ihre Aktivität A starten und Daten speichern wollen, die in C existieren, dann starten Sie Ihre Aktivität A mit Absicht. Und beenden Sie Ihre Aktivität nicht C. Und wenn Sie die Aktivität C wieder aufnehmen möchten, rufen Sie einfach onBackPressed() von Ihrer Aktivität A. Vergessen Sie nicht, Ihre Aktivität zu beenden A. Für diesen Anruf onFinish().

+0

Aktivität A ist Hauptaktivität. und jedes Mal, wenn Aktivität C mit verschiedenen Daten geladen wurde, die auf dem in B-Aktivität angeklickten Objekt verteidigt wurden. –

+0

Wenn Sie Aktivität A aus Aktivität C öffnen möchten, sollten Sie dies tun. Wenn Sie onBackPressed() aufrufen, wird Ihre Aktivität C fortgesetzt. Wenn Sie jedoch Aktivität C aus Aktivität B aufrufen möchten, erstellen Sie Aktivität C mit Absicht neu. – JavadKhan

+0

Wenn die App dauerhaft geschlossen wird und sie dann wieder geöffnet wird, wie kann ich dann auf Aktivität C von A mit vorherigem Status zugreifen? –

Verwandte Themen