
點擊收聽,顯示此博主的偶像列表,點擊列表,將顯示偶像的詳情界面

- public ? class ?IdolActivity? extends ?ListActivity? implements ?OnItemClickListener{ ??
- ??
- ???? private ?DataHelper?dataHelper; ??
- ???? private ?UserInfo?user; ??
- ???? private ?MyWeiboSync?weibo; ??
- ???? private ?Handler?handler; ??
- ???? private ?AsyncImageLoader?asyncImageLoader;? ??
- ???? private ?IdolThread?thread; ??
- ???? private ?ProgressDialog?progressDialog; ??
- ???? private ?JSONArray?array; ??
- ???? private ?IdolAdapter?adapter; ??
- ???? private ?ListView?listView; ??
- ???? private ?String?name; ??
- ???? private ?String?currentNick; //當前界面的昵稱 ??
- ???? private ?View?top_panel; ??
- ???? private ?Button?top_btn_left; ??
- ???? private ?Button?top_btn_right; ??
- ???? private ?TextView?top_title; ??
- ???? ??
- ???? @Override ??
- ???? protected ? void ?onCreate(Bundle?savedInstanceState)?{ ??
- ???????? super .onCreate(savedInstanceState); ??
- ????????setContentView(R.layout.idol); ??
- ????????setUpViews(); //設置view ??
- ????????setUpListeners(); //設置listenter ??
- ???????? ??
- ????????asyncImageLoader?=? new ?AsyncImageLoader(); ??
- ????????dataHelper?=? new ?DataHelper(IdolActivity. this ); ??
- ????????weibo?=? new ?MyWeiboSync(); ??
- ????????List<UserInfo>?userList?=?dataHelper.GetUserList( false ); ??
- ???????? ??
- ????????SharedPreferences?preferences?=?getSharedPreferences( "default_user" ,Activity.MODE_PRIVATE); ??
- ????????String?nick?=?preferences.getString( "user_default_nick" ,? "" ); ??
- ???????? if ?(nick?!=? "" )?{ ??
- ????????????user?=?dataHelper.getUserByName(nick,userList); ??
- ????????} ??
- ????????weibo.setAccessTokenKey(user.getToken()); ??
- ????????weibo.setAccessTokenSecrect(user.getTokenSecret()); ??
- ???????? ??
- ????????Intent?intent?=?getIntent(); ??
- ????????name?=?intent.getStringExtra( "name" ); //獲取從前面頁面傳遞過來的數據 ??
- ????????currentNick?=?intent.getStringExtra( "nick" ); ??
- ????????top_title.setText(currentNick+ "的偶像" ); ??
- ???????? ??
- ????????progressDialog?=? new ?ProgressDialog(IdolActivity. this ); //?生成一個進度條 ??
- ????????progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); ??
- ????????progressDialog.setTitle( "請稍等" ); ??
- ????????progressDialog.setMessage( "正在讀取數據中!" ); ??
- ???????? ??
- ????????handler?=? new ?IdolHandler(); ??
- ????????thread?=? new ?IdolThread(); ??
- ????????thread.start(); //開啟一個線程獲取數據 ??
- ????????progressDialog.show(); ??
- ????} ??
- ???? ??
- ???? private ? void ?setUpViews(){ ??
- ????????listView?=?getListView(); ??
- ????????top_panel?=?(View)findViewById(R.id.idol_top); ??
- ????????top_btn_left?=?(Button)top_panel.findViewById(R.id.top_btn_left); ??
- ????????top_btn_right?=?(Button)top_panel.findViewById(R.id.top_btn_right); ??
- ????????top_title?=?(TextView)top_panel.findViewById(R.id.top_title); ??
- ????} ??
- ???? ??
- ???? private ? void ?setUpListeners(){ ??
- ????????listView.setOnItemClickListener( this ); ??
- ????} ??
- ???? ??
- ???? class ?IdolThread? extends ?Thread?{ ??
- ???????? @Override ??
- ???????? public ? void ?run()?{ ??
- ????????????String?jsonStr?=?weibo.getIdols(weibo.getAccessTokenKey(),?weibo.getAccessTokenSecrect(),? 20 ,? 0 ,?name); ??
- ???????????? try ?{ ??
- ????????????????JSONObject?dataObj?=? new ?JSONObject(jsonStr).getJSONObject( "data" ); ??
- ????????????????array?=?dataObj.getJSONArray( "info" ); ??
- ????????????}? catch ?(JSONException?e)?{ ??
- ????????????????e.printStackTrace(); ??
- ????????????} ??
- ???????????? //通知handler處理數據 ??
- ????????????Message?msg?=?handler.obtainMessage(); ??
- ????????????handler.sendMessage(msg); ??
- ????????} ??
- ????} ??
- ???? ??
- ???? class ?IdolHandler? extends ?Handler?{? ??
- ???????? @Override ??
- ???????? public ? void ?handleMessage(Message?msg){ ??
- ????????????adapter?=? new ?IdolAdapter(IdolActivity. this ,?array); ??
- ????????????listView.setAdapter(adapter); ??
- ????????????progressDialog.dismiss(); //?關閉進度條 ??
- ????????} ??
- ????} ??
- ???? ??
- ???? class ?IdolAdapter? extends ?BaseAdapter?{ ??
- ???????? private ?Context?context; ??
- ???????? private ?LayoutInflater?inflater; ??
- ???????? private ?JSONArray?array; ??
- ???????? ??
- ???????? public ?IdolAdapter(Context?context,?JSONArray?array)?{ ??
- ???????????? super (); ??
- ???????????? this .context?=?context; ??
- ???????????? this .array?=?array; ??
- ???????????? this .inflater?=?LayoutInflater.from(context); ??
- ????????} ??
- ??
- ???????? @Override ??
- ???????? public ? int ?getCount()?{ ??
- ???????????? return ?array.length(); ??
- ????????} ??
- ??
- ???????? @Override ??
- ???????? public ?Object?getItem( int ?position)?{ ??
- ???????????? return ?array.opt(position); ??
- ????????} ??
- ??
- ???????? @Override ??
- ???????? public ? long ?getItemId( int ?position)?{ ??
- ???????????? return ?position; ??
- ????????} ??
- ??
- ???????? @Override ??
- ???????? public ?View?getView( final ? int ?position,?View?convertView,?ViewGroup?parent)?{ ??
- ????????????asyncImageLoader?=? new ?AsyncImageLoader(); ??
- ????????????IdolViewHolder?viewHolder?=? new ?IdolViewHolder(); ??
- ????????????JSONObject?data?=?(JSONObject)array.opt(position); ??
- ????????????convertView?=?inflater.inflate(R.layout.idol_list_item,? null ); ??
- ???????????? ??
- ????????????viewHolder.idol_headicon?=?(ImageView)?convertView.findViewById(R.id.idol_headicon); ??
- ????????????viewHolder.idol_nick?=?(TextView)?convertView.findViewById(R.id.idol_nick); ??
- ????????????viewHolder.idol_name?=?(TextView)?convertView.findViewById(R.id.idol_name); ??
- ???????????? ??
- ????????????Drawable?cachedImage?=? null ; ??
- ???????????? if (data!= null ){ ??
- ???????????????? try ?{ ??
- ????????????????????convertView.setTag(data.get( "name" )); ??
- ????????????????????viewHolder.idol_nick.setText(data.getString( "nick" )); ??
- ????????????????????viewHolder.idol_name.setText( "@" +data.getString( "name" )); ??
- ???????????????????? //異步加載圖片 ??
- ????????????????????cachedImage?=?asyncImageLoader.loadDrawable(data.getString( "head" )+ "/100" ,viewHolder.idol_headicon,? new ?ImageCallback(){ ??
- ???????????????????????? @Override ??
- ???????????????????????? public ? void ?imageLoaded(Drawable?imageDrawable,ImageView?imageView,?String?imageUrl)?{ ??
- ????????????????????????????imageView.setImageDrawable(imageDrawable); ??
- ????????????????????????} ??
- ????????????????????}); ??
- ???????????????????? if (cachedImage?==? null )?{ ??
- ????????????????????????viewHolder.idol_headicon.setImageResource(R.drawable.icon); ??
- ????????????????????} ??
- ????????????????}? catch ?(JSONException?e)?{ ??
- ????????????????????e.printStackTrace(); ??
- ????????????????}? catch ?(Exception?e)?{ ??
- ????????????????????e.printStackTrace(); ??
- ????????????????} ??
- ????????????} ??
- ???????????? return ?convertView; ??
- ????????} ??
- ????} ??
- ???? ??
- ???? static ? class ?IdolViewHolder?{ ??
- ???????? private ?ImageView?idol_headicon; ??
- ???????? private ?TextView?idol_nick; ??
- ???????? private ?TextView?idol_name; ??
- ????} ??
- ??
- ???? @Override ??
- ???? public ? void ?onItemClick(AdapterView<?>?arg0,?View?arg1,? int ?position,? long ?arg3)?{ ??
- ????????Intent?intent?=? new ?Intent(IdolActivity. this ,UserInfoActivity. class ); ??
- ???????? try ?{ ??
- ????????????JSONObject?fansInfo?=?(JSONObject)array.opt(position); ??
- ????????????JSONArray?tweets?=?fansInfo.getJSONArray( "tweet" ); ??
- ????????????JSONObject?tweet?=? null ; ??
- ???????????? if (tweets!= null &&tweets.length()> 0 ){ ??
- ????????????????tweet?=?(JSONObject)tweets.opt( 0 ); ??
- ????????????????intent.putExtra( "origtext" ,?tweet.getString( "text" )); ??
- ????????????????intent.putExtra( "timestamp" ,?TimeUtil.getStandardTime(tweet.getLong( "timestamp" ))); ??
- ????????????} ??
- ????????????intent.putExtra( "name" ,?fansInfo.getString( "name" )); ??
- ????????????intent.putExtra( "nick" ,?fansInfo.getString( "nick" )); ??
- ????????}? catch ?(JSONException?e)?{ ??
- ????????????e.printStackTrace(); ??
- ????????} ??
- ????????startActivity(intent); //跳轉到用戶信息界面 ??
- ????} ??
- }??
public class IdolActivity extends ListActivity implements OnItemClickListener{ private DataHelper dataHelper; private UserInfo user; private MyWeiboSync weibo; private Handler handler; private AsyncImageLoader asyncImageLoader; private IdolThread thread; private ProgressDialog progressDialog; private JSONArray array; private IdolAdapter adapter; private ListView listView; private String name; private String currentNick;//當前界面的昵稱 private View top_panel; private Button top_btn_left; private Button top_btn_right; private TextView top_title; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.idol); setUpViews();//設置view setUpListeners();//設置listenter asyncImageLoader = new AsyncImageLoader(); dataHelper = new DataHelper(IdolActivity.this); weibo = new MyWeiboSync(); List<UserInfo> userList = dataHelper.GetUserList(false); SharedPreferences preferences = getSharedPreferences("default_user",Activity.MODE_PRIVATE); String nick = preferences.getString("user_default_nick", ""); if (nick != "") { user = dataHelper.getUserByName(nick,userList); } weibo.setAccessTokenKey(user.getToken()); weibo.setAccessTokenSecrect(user.getTokenSecret()); Intent intent = getIntent(); name = intent.getStringExtra("name");//獲取從前面頁面傳遞過來的數據 currentNick = intent.getStringExtra("nick"); top_title.setText(currentNick+"的偶像"); progressDialog = new ProgressDialog(IdolActivity.this);// 生成一個進度條 progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.setTitle("請稍等"); progressDialog.setMessage("正在讀取數據中!"); handler = new IdolHandler(); thread = new IdolThread(); thread.start();//開啟一個線程獲取數據 progressDialog.show(); } private void setUpViews(){ listView = getListView(); top_panel = (View)findViewById(R.id.idol_top); top_btn_left = (Button)top_panel.findViewById(R.id.top_btn_left); top_btn_right = (Button)top_panel.findViewById(R.id.top_btn_right); top_title = (TextView)top_panel.findViewById(R.id.top_title); } private void setUpListeners(){ listView.setOnItemClickListener(this); } class IdolThread extends Thread { @Override public void run() { String jsonStr = weibo.getIdols(weibo.getAccessTokenKey(), weibo.getAccessTokenSecrect(), 20, 0, name); try { JSONObject dataObj = new JSONObject(jsonStr).getJSONObject("data"); array = dataObj.getJSONArray("info"); } catch (JSONException e) { e.printStackTrace(); } //通知handler處理數據 Message msg = handler.obtainMessage(); handler.sendMessage(msg); } } class IdolHandler extends Handler { @Override public void handleMessage(Message msg){ adapter = new IdolAdapter(IdolActivity.this, array); listView.setAdapter(adapter); progressDialog.dismiss();// 關閉進度條 } } class IdolAdapter extends BaseAdapter { private Context context; private LayoutInflater inflater; private JSONArray array; public IdolAdapter(Context context, JSONArray array) { super(); this.context = context; this.array = array; this.inflater = LayoutInflater.from(context); } @Override public int getCount() { return array.length(); } @Override public Object getItem(int position) { return array.opt(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { asyncImageLoader = new AsyncImageLoader(); IdolViewHolder viewHolder = new IdolViewHolder(); JSONObject data = (JSONObject)array.opt(position); convertView = inflater.inflate(R.layout.idol_list_item, null); viewHolder.idol_headicon = (ImageView) convertView.findViewById(R.id.idol_headicon); viewHolder.idol_nick = (TextView) convertView.findViewById(R.id.idol_nick); viewHolder.idol_name = (TextView) convertView.findViewById(R.id.idol_name); Drawable cachedImage = null; if(data!=null){ try { convertView.setTag(data.get("name")); viewHolder.idol_nick.setText(data.getString("nick")); viewHolder.idol_name.setText("@"+data.getString("name")); //異步加載圖片 cachedImage = asyncImageLoader.loadDrawable(data.getString("head")+"/100",viewHolder.idol_headicon, new ImageCallback(){ @Override public void imageLoaded(Drawable imageDrawable,ImageView imageView, String imageUrl) { imageView.setImageDrawable(imageDrawable); } }); if(cachedImage == null) { viewHolder.idol_headicon.setImageResource(R.drawable.icon); } } catch (JSONException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } return convertView; } } static class IdolViewHolder { private ImageView idol_headicon; private TextView idol_nick; private TextView idol_name; } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { Intent intent = new Intent(IdolActivity.this,UserInfoActivity.class); try { JSONObject fansInfo = (JSONObject)array.opt(position); JSONArray tweets = fansInfo.getJSONArray("tweet"); JSONObject tweet = null; if(tweets!=null&&tweets.length()>0){ tweet = (JSONObject)tweets.opt(0); intent.putExtra("origtext", tweet.getString("text")); intent.putExtra("timestamp", TimeUtil.getStandardTime(tweet.getLong("timestamp"))); } intent.putExtra("name", fansInfo.getString("name")); intent.putExtra("nick", fansInfo.getString("nick")); } catch (JSONException e) { e.printStackTrace(); } startActivity(intent);//跳轉到用戶信息界面 } }
- <?xml?version= "1.0" ?encoding= "utf-8" ?> ??
- <RelativeLayout?android:layout_width= "fill_parent" ?android:layout_height= "fill_parent" ?android:background= "#ffffffff" ??
- ????xmlns:android= "http://schemas.android.com/apk/res/android" > ??
- ????<include?android:id= "@+id/idol_top" ?layout= "@layout/top_panel" ?android:layout_alignParentTop= "true" /> ??
- ????<ListView?android:id= "@id/android:list" ?android:layout_below= "@id/idol_top" ?android:layout_width= "fill_parent" ?android:cacheColorHint= "#00000000" ??
- ????????android:layout_height= "fill_parent" ?android:layout_weight= "1" ?android:divider= "@drawable/list_divider" /> ??
- ????<RelativeLayout?android:layout_width= "fill_parent" ?android:layout_height= "40.0dip" ?android:layout_alignParentBottom= "true" > ??
- ????????<Button?android:id= "@+id/idol_back_btn" ?android:layout_width= "40.0dip" ?android:drawableTop= "@drawable/btn_back_selector" ?android:background= "@drawable/bottom_back_bg" ??
- ????????????android:layout_height= "40.0dip" ??android:layout_alignParentLeft= "true" /> ??
- ????????<Button?android:id= "@+id/idol_tohome_btn" ?android:layout_width= "40.0dip" ??
- ????????????android:layout_height= "40.0dip" ?android:drawableTop= "@drawable/btn_home_selector" ?android:background= "@drawable/bottom_home_bg" ?android:layout_alignParentRight= "true" /> ??
- ????</RelativeLayout> ??
- </RelativeLayout>??
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffffff" xmlns:android="http://schemas.android.com/apk/res/android"> <include android:id="@+id/idol_top" layout="@layout/top_panel" android:layout_alignParentTop="true"/> <ListView android:id="@id/android:list" android:layout_below="@id/idol_top" android:layout_width="fill_parent" android:cacheColorHint="#00000000" android:layout_height="fill_parent" android:layout_weight="1" android:divider="@drawable/list_divider"/> <RelativeLayout android:layout_width="fill_parent" android:layout_height="40.0dip" android:layout_alignParentBottom="true"> <Button android:id="@+id/idol_back_btn" android:layout_width="40.0dip" android:drawableTop="@drawable/btn_back_selector" android:background="@drawable/bottom_back_bg" android:layout_height="40.0dip" android:layout_alignParentLeft="true"/> <Button android:id="@+id/idol_tohome_btn" android:layout_width="40.0dip" android:layout_height="40.0dip" android:drawableTop="@drawable/btn_home_selector" android:background="@drawable/bottom_home_bg" android:layout_alignParentRight="true"/> </RelativeLayout> </RelativeLayout>
- <?xml?version= "1.0" ?encoding= "utf-8" ?> ??
- <LinearLayout?xmlns:android= "http://schemas.android.com/apk/res/android" ?android:paddingTop= "3.0dip" ?android:orientation= "horizontal" ?android:background= "@drawable/listitem_selector" ??android:layout_width= "fill_parent" ?android:layout_height= "wrap_content" > ??
- ????<RelativeLayout?android:layout_width= "50.0dip" ?android:layout_height= "50.0dip" ?android:layout_weight= "0.0" > ??
- ????????<ImageView?android:id= "@+id/idol_headicon" ?android:layout_width= "45.0dip" ?android:layout_height= "45.0dip" ?android:scaleType= "fitCenter" ?android:layout_centerInParent= "true" ?/> ??
- ????</RelativeLayout> ??
- ????<RelativeLayout?android:orientation= "vertical" ?android:layout_width= "wrap_content" ?android:layout_height= "wrap_content" ?android:padding= "4.0dip" ?android:layout_weight= "1.0" > ??
- ????????<TextView?android:id= "@+id/idol_nick" ?android:textColor= "#000000" ?android:layout_width= "wrap_content" ?android:layout_height= "32.0dip" ?android:textSize= "14.0sp" ?android:layout_alignParentLeft= "true" /> ??
- ????????<TextView?android:id= "@+id/idol_name" ?android:layout_marginLeft= "6.0dip" ?android:layout_below= "@id/idol_nick" ?android:textColor= "#ff000000" ?android:layout_width= "wrap_content" ?android:layout_height= "32.0dip" ?android:textSize= "8.0sp" ?android:layout_alignParentLeft= "true" /> ??
- ????</RelativeLayout> ??
- </LinearLayout>??
- http://helloandroid.iteye.com/blog/1136761
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
