setOnClickListener
来源:互联网 发布:pkpm筒仓设计软件 编辑:程序博客网 时间:2024/06/08 07:18
package com.yuchongxia.internetradio.widget;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.LinearLayout;import com.yuchongxia.internetradio.R;public class MessageView extends LinearLayout { private OnClickListener ml; public MessageView(Context context) { super(context); LayoutInflater.from(getContext()).inflate(R.layout.message_view, this); findViewById(R.id.button_refresh).setOnClickListener(onClickListener); } public MessageView(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(getContext()).inflate(R.layout.message_view, this); findViewById(R.id.button_refresh).setOnClickListener(onClickListener); } OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { if (ml != null) { ml.onClick(v); } } }; @Override public void setOnClickListener(OnClickListener l) { ml = l; super.setOnClickListener(ml); }}
package com.yuchongxia.internetradio.widget;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Locale;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.content.Context;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.widget.RelativeLayout;import com.yuchongxia.internetradio.R;import com.yuchongxia.internetradio.constant.Constant;import com.yuchongxia.internetradio.pojo.ContentCategory;import com.yuchongxia.internetradio.util.HttpClientUtil;import com.yuchongxia.internetradio.util.Util;/** * 分类导航组件 * * @author Andy * @date 2013-9-3 */public class NavigationBar extends RelativeLayout { private Context context; private RelativeLayout.LayoutParams params; private RelativeLayout container; // 焦点所在位置 private int focusPosition = 1; private OnMyClickListener onMyClickListener; private OnDataPreparedListener onDataPreparedListener; private List<ContentCategory> list; // private ContentCategoryDao contentCategoryDao; public NavigationBar(Context context, AttributeSet attrs) throws IOException, JSONException { super(context, attrs); this.context = context; LayoutInflater.from(getContext()).inflate(R.layout.navigation_bar, this); container = (RelativeLayout) findViewById(R.id.layout_navigationBar); list = new ArrayList<ContentCategory>(); // contentCategoryDao = new ContentCategoryDao(context); if (Util.isNetworkAvailable(context)) { getRingCategory(); } } // public void writeDB() { // new Thread() { // @Override // public void run() { // super.run(); // // contentCategoryDao.insert(list); // } // }.start(); // } public void parseJson(final String data) { new Thread() { @Override public void run() { try { JSONArray jsonArray = new JSONArray(data); if (jsonArray == null || jsonArray.length() == 0) { handler.sendEmptyMessage(0); return; } Log.i(Constant.TAG, "开始解析网络获取的数据"); for (int i = 0; i < jsonArray.length(); i++) { ContentCategory contentCategory = new ContentCategory(); JSONObject object = (JSONObject) jsonArray.getJSONObject(i); int categoryId = object.getInt("categoryId"); String categoryName = object.getString("categoryName"); int sort = object.getInt("order"); int publishTime = object.getInt("publishTime"); contentCategory.setCategoryId(categoryId); contentCategory.setCategoryName(categoryName); contentCategory.setSort(sort); contentCategory.setPublishTime(publishTime); list.add(contentCategory); } Log.i(Constant.TAG, "解析后数据 jsList size:" + list.size()); // 全部 ContentCategory temp = new ContentCategory(); temp.setCategoryId(-1); temp.setCategoryName(context.getString(R.string.all)); list.add(0, temp); temp = new ContentCategory(); temp.setCategoryId(-2); temp.setCategoryName(context.getString(R.string.collect)); list.add(0, temp); temp = new ContentCategory(); temp.setCategoryId(-3); temp.setCategoryName(context.getString(R.string.local_radio)); list.add(temp); temp = new ContentCategory(); temp.setCategoryId(-4); temp.setCategoryName(context.getString(R.string.more)); list.add(temp); handler.sendEmptyMessage(1); } catch (JSONException e) { Log.i(Constant.TAG, "解析数据时出错"); e.printStackTrace(); } } }.start(); } public void getRingCategory() { new Thread() { @Override public void run() { String data = HttpClientUtil.get(Constant.CONTENT_CATEGOARY_URL); parseJson(data); } }.start(); } public void layout() { container.removeAllViews(); NavigationButton btn; int cnt = list.size(); if (onDataPreparedListener != null) { Log.i(Constant.TAG, "prepared"); onDataPreparedListener.onPrepared(list); } for (int i = 0; i < cnt; i++) { params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); btn = new NavigationButton(context); btn.setId(i + 1); btn.setText(list.get(i).getCategoryName()); btn.setOnClickListener(clickListener); if (i == 0) { btn.setChoosed(true); } String language = Locale.getDefault().getLanguage(); String country = Locale.getDefault().getCountry(); // zh CN // zh TW // en ** if (language.equals("zh") && country.equals("CN")) { } else if (language.equals("zh") && country.equals("TW")) { } else { } if (i > 0) { params.addRule(RelativeLayout.BELOW, i); } container.addView(btn, params); } } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { Log.i(Constant.TAG, "无法获取数据"); } else if (msg.what == 1) { layout(); } } }; /** * 刷新NavigationBar */ public void refresh() { getRingCategory(); // 恢复当前位置标示 focusPosition = 1; } /** * 取 NavigationBar 第一项的分类id * * @return 第一项的分类id */ // public String getFirst() { // if (list.size() != 0) { // return list.get(0).getCategoryId(); // } else { // return ""; // } // } /** * 焦点是否在第一项 */ public boolean isFocusOnFirst() { return focusPosition == 1 ? true : false; } public void setChoosed(int id) { NavigationButton btn = (NavigationButton) findViewById(focusPosition); btn.setChoosed(false); btn = (NavigationButton) findViewById(id); btn.setChoosed(true); // 标记当前选中项 focusPosition = id; } OnClickListener clickListener = new OnClickListener() { @Override public void onClick(View v) { int id = v.getId(); // 取消选中 NavigationButton btn = (NavigationButton) findViewById(focusPosition); btn.setChoosed(false); focusPosition = id; // 重新选中 btn = (NavigationButton) findViewById(id); btn.setChoosed(true); if (onMyClickListener != null && list.size() != 0) { onMyClickListener.onClick(id - 1); } } }; /** * 回调接口 * */ public interface OnDataPreparedListener { public void onPrepared(List<ContentCategory> list); } public interface OnMyClickListener { public void onClick(int buttonId); } /** * 设置一个监听,供外部调用的方法 */ public void setOnMyClickListener(OnMyClickListener listener) { this.onMyClickListener = listener; } /** * 设置一个监听,供外部调用的方法 */ public void setOnDataPreparedListener(OnDataPreparedListener onDataPreparedListener) { this.onDataPreparedListener = onDataPreparedListener; }}
0 0
- setOnClickListener
- setOnClickListener
- setOnClickListener 问题
- setOnclickListener、setClickable
- 关于setOnClickListener的错误
- clearButton.setOnClickListener(this);
- Android setOnClickListener使用方法
- setOnTouchListener onTouchEvent setOnClickListener
- Android学习之setOnClickListener
- setOnClickListener 影响 clickable
- button.setOnClickListener出错
- android ImageView setOnLongClickListener setOnClickListener
- setOnClickListener(this)是什么意思?
- .setOnClickListener报错NullPointerException
- Button之setOnClickListener
- ListView的setOnClickListener失效
- TextView的setOnClickListener
- setonClickListener()的解释
- 各种Android插件
- paros抓包教程
- android 滚动条
- AutoIt访问WebService
- mysql时间戳
- setOnClickListener
- Android Notification 通知栏
- ios swift http json
- ios swift 入门笔记
- ios swift tableview
- Android 跳转到市场给好评
- C++如何防止头文件被二次编译
- Android Timer(计时器)
- ios swift Button, Label, AlertView