PDA

View Full Version : اجرای یک اکتیویتی دیگر با expandable list view



1yaram
چهارشنبه 25 تیر 1393, 16:01 عصر
سلام من یه مشکلی دارم اونم اینکه expandable list view رو میتونم بسازمش ولی وقتی که میخوام با کلیک کردن روی یکی از زیر شاخه ها به اکتیویتی دیگر برود و مثلا یک متن نشان دهد اینو نمیدونم چه جوری میشه مثلا در پایین نگاه کنید میخواهم با کلیک بر شاخه The Shawshank Redemption یه اکتیویتی اجرا بشه


MainActivity.java
package info.androidhive.expandablelistview;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickList ener;
import android.widget.ExpandableListView.OnGroupClickList ener;
import android.widget.ExpandableListView.OnGroupCollapseL istener;
import android.widget.ExpandableListView.OnGroupExpandLis tener;
import android.widget.Toast;

public class MainActivity extends Activity {

ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// get the listview
expListView = (ExpandableListView) findViewById(R.id.lvExp);

// preparing list data
prepareListData();

listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);

// setting list adapter
expListView.setAdapter(listAdapter);
}

/*
* Preparing the list data
*/
private void prepareListData() {
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();

// Adding child data
listDataHeader.add("Top 250");
listDataHeader.add("Now Showing");
listDataHeader.add("Coming Soon..");

// Adding child data
List<String> top250 = new ArrayList<String>();
top250.add("The Shawshank Redemption");
top250.add("The Godfather");
top250.add("The Godfather: Part II");
top250.add("Pulp Fiction");
top250.add("The Good, the Bad and the Ugly");
top250.add("The Dark Knight");
top250.add("12 Angry Men");

List<String> nowShowing = new ArrayList<String>();
nowShowing.add("The Conjuring");
nowShowing.add("Despicable Me 2");
nowShowing.add("Turbo");
nowShowing.add("Grown Ups 2");
nowShowing.add("Red 2");
nowShowing.add("The Wolverine");

List<String> comingSoon = new ArrayList<String>();
comingSoon.add("2 Guns");
comingSoon.add("The Smurfs 2");
comingSoon.add("The Spectacular Now");
comingSoon.add("The Canyons");
comingSoon.add("Europa Report");

listDataChild.put(listDataHeader.get(0), top250); // Header, Child data
listDataChild.put(listDataHeader.get(1), nowShowing);
listDataChild.put(listDataHeader.get(2), comingSoon);
}
}






منبا کد : http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/
لطلفا هرچه زودتر یکی جواب بده با تشکر

parvizwpf
چهارشنبه 25 تیر 1393, 16:49 عصر
ExpandableListView.OnChildClickListener
ExpandableListView.OnGroupClickListener

1yaram
پنج شنبه 26 تیر 1393, 04:57 صبح
.................

1yaram
پنج شنبه 26 تیر 1393, 04:59 صبح
ExpandableListView.OnChildClickListener
ExpandableListView.OnGroupClickListener


سلام دوست عزیز ممنون اما شما فقط به اول کد اشاره کردید میشه بقیشم بنویسین فکر کنم با case0 , case1 وتا آخر بشه ادامه داد
میشه فقط در اجرای دو اکتیویتی اول راهنمایی کنین بقیشو خودم مینویسم
بازم تشکر.

poorman
پنج شنبه 26 تیر 1393, 05:04 صبح
سلام

شما توی تابع OnChildClickListener دو تا مقدار دارید، یکی groupPosition و یکی childPosition

دقیقا همونطور که خودتون اشاره کردید با switch میشه این کار رو انجام داد، به این صورت که شرط بذارید اگر groupPosition برابر مثلا صفر بود ( گروه 250 تای برتر )

حالا داخل این شرط یک سوئیچ میذارید برای childPosition که اگر 0 بود اکتیویتی اول اجرا بشه، اگر 1 بود اکتیویتی دوم مربوط به لیست فرزندان گروه اول و ...

برای گروه های دیگه هم به همین ترتیب

1yaram
شنبه 28 تیر 1393, 15:04 عصر
expListView.setOnChildClickListener(new OnChildClickListener() { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
switch(groupPosition) {
case 1:
switch (childPosition) {
case 0:
Intent protheanIntent = new Intent(MainActivity.this, TheShawshankRedemption.class);
MainActivity.this.startActivity(protheanIntent);
break;
case 1:
Intent rachniIntent = new Intent(MainActivity.this, TheShawshankRedemption.class);
MainActivity.this.startActivity(rachniIntent);
break;
}
case 2:
switch (childPosition) {
case 2:
Intent asariIntent = new Intent(MainActivity.this, TheShawshankRedemption.class);
MainActivity.this.startActivity(asariIntent);
break;
}
}
return false;
}
});

1yaram
سه شنبه 31 تیر 1393, 19:03 عصر
سلام اون کاری رو که تو expandable list view گفته بودید رو انجام دادم ولی مشکل اینه که بعد از این که چند تا از زیر مجموعه child هارو کامل میکنم وقتی میخوام رو اولین child کلیک کنم دو تا اکتیویتی باز میشه یکی از chil0 گروه1 و یکی از child0 گروه 0 آخه چرا مشکل از کجاست

expListView.setOnChildClickListener(new OnChildClickListener() { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { switch(groupPosition) {
case 1:
switch (childPosition) {
case 0:
Intent protheanIntent = new Intent(MainActivity.this, TheShawshankRedemption.class);
MainActivity.this.startActivity(protheanIntent);
break;
case 1:
Intent rachniIntent = new Intent(MainActivity.this, TheAnother.class);
MainActivity.this.startActivity(rachniIntent);
break;
}
case 2:
switch (childPosition) {
case 2:
Intent asariIntent = new Intent(MainActivity.this, TheOther.class);
MainActivity.this.startActivity(asariIntent);
break;
}
}
return false;
}

});

1yaram
چهارشنبه 01 مرداد 1393, 01:44 صبح
با سلام بالا خره خودم فهمیم باید در آخر child یه break دیگه اضافه میکردم تا درست بشه

poorman
چهارشنبه 01 مرداد 1393, 03:46 صبح
سلام

حالا من جواب رو توی پ.خ هم گفتم اما برای اینکه دیگران اگر چنین مشکلی داشتن حل بشه براشون میگم اینجا هم

مشکل شما با گذاشتن break در ظاهر حل میشه اما باز هم مشکلتون هست

شما باید شماره گذاری فرزندهای هر گروه رو از صفر شروع کنید نه اینکه دنبال هم شماره گذاری کنید