MineImageButton(历史记录):
这里说下第三方的插件类似这样的(@InjectView(R.id.register_account) EditText mRegister_account;)这个插件叫做butterknife -- 注解
可以省去findviewbyid,感觉好用是好用,但是不是很习惯,hhh,毕竟书上和教程视频上都是老老实实的findviewbyid的。
package com.apk.bilibili.activity
;
import android.app.Activity ;
import android.os.Bundle ;
import android.view.Window ;
import android.widget.ListView ;
import com.apk.bilibili.R ;
import com.apk.bilibili.utils.BaseAdapterHelper ;
import com.apk.bilibili.utils.History ;
import com.apk.bilibili.utils.QuickAdapter ;
import java.util.List ;
import cn.bmob.v3.Bmob ;
import cn.bmob.v3.BmobQuery ;
import cn.bmob.v3.listener.FindListener ;
/**
* Created by Administrator on 2016/8/25.
*/
public class MineImageButton extends Activity {
private ListView mHistory_List ;
protected QuickAdapter<History> MineAdapter ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
requestWindowFeature(Window. FEATURE_NO_TITLE) ;
setContentView(R.layout. mine_imagebutton) ;
Bmob. initialize( MineImageButton. this, "4abc415ca666a3fa6301ad90a0d2fa8d") ;
mHistory_List=(ListView)findViewById(R.id. history_list) ;
initData() ;
queryContent() ;
}
public void initData() {
// TODO Auto-generated method stub
if ( MineAdapter == null) {
MineAdapter = new QuickAdapter<History>( MineImageButton. this, R.layout. history_item) {
@Override
protected void convert(BaseAdapterHelper helper , History history) {
helper.setText(R.id. history_tv , history.getHistory_record()) ;
}
} ;
mHistory_List.setAdapter( MineAdapter) ;
}
}
private void queryContent() {
BmobQuery<History> bmobQuery = new BmobQuery<History>() ;
bmobQuery.findObjects( this, new FindListener<History>() {
@Override
public void onSuccess(List<History> list) {
if (list == null || list.size() == 0) {
MineAdapter.notifyDataSetChanged() ;
return;
}
MineAdapter.addAll(list) ;
mHistory_List.setAdapter( MineAdapter) ;
}
@Override
public void onError( int i , String s) {
}
}) ;
}
}
import android.app.Activity ;
import android.os.Bundle ;
import android.view.Window ;
import android.widget.ListView ;
import com.apk.bilibili.R ;
import com.apk.bilibili.utils.BaseAdapterHelper ;
import com.apk.bilibili.utils.History ;
import com.apk.bilibili.utils.QuickAdapter ;
import java.util.List ;
import cn.bmob.v3.Bmob ;
import cn.bmob.v3.BmobQuery ;
import cn.bmob.v3.listener.FindListener ;
/**
* Created by Administrator on 2016/8/25.
*/
public class MineImageButton extends Activity {
private ListView mHistory_List ;
protected QuickAdapter<History> MineAdapter ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
requestWindowFeature(Window. FEATURE_NO_TITLE) ;
setContentView(R.layout. mine_imagebutton) ;
Bmob. initialize( MineImageButton. this, "4abc415ca666a3fa6301ad90a0d2fa8d") ;
mHistory_List=(ListView)findViewById(R.id. history_list) ;
initData() ;
queryContent() ;
}
public void initData() {
// TODO Auto-generated method stub
if ( MineAdapter == null) {
MineAdapter = new QuickAdapter<History>( MineImageButton. this, R.layout. history_item) {
@Override
protected void convert(BaseAdapterHelper helper , History history) {
helper.setText(R.id. history_tv , history.getHistory_record()) ;
}
} ;
mHistory_List.setAdapter( MineAdapter) ;
}
}
private void queryContent() {
BmobQuery<History> bmobQuery = new BmobQuery<History>() ;
bmobQuery.findObjects( this, new FindListener<History>() {
@Override
public void onSuccess(List<History> list) {
if (list == null || list.size() == 0) {
MineAdapter.notifyDataSetChanged() ;
return;
}
MineAdapter.addAll(list) ;
mHistory_List.setAdapter( MineAdapter) ;
}
@Override
public void onError( int i , String s) {
}
}) ;
}
}
MineThridImageButton(系统消息):
package com.apk.bilibili.activity
;
import android.app.Activity ;
import android.os.Bundle ;
import android.view.Window ;
import android.widget.ListView ;
import com.apk.bilibili.R ;
import com.apk.bilibili.utils.BaseAdapterHelper ;
import com.apk.bilibili.utils.QuickAdapter ;
import com.apk.bilibili.utils.SystemMessage ;
import java.util.List ;
import cn.bmob.v3.Bmob ;
import cn.bmob.v3.BmobQuery ;
import cn.bmob.v3.listener.FindListener ;
public class MineThridImageButton extends Activity {
private ListView listView ;
protected QuickAdapter<SystemMessage> MineAdapter ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
requestWindowFeature(Window. FEATURE_NO_TITLE) ;
setContentView(R.layout. mine_thrid_imagebutton) ;
Bmob. initialize(MineThridImageButton. this, "4abc415ca666a3fa6301ad90a0d2fa8d") ;
listView=(ListView)findViewById(R.id. listview) ;
queryContent() ;
initData() ;
}
public void initData() {
// TODO Auto-generated method stub
if ( MineAdapter == null) {
MineAdapter = new QuickAdapter<SystemMessage>( this, R.layout. item_list) {
@Override
protected void convert(BaseAdapterHelper helper , SystemMessage systemMessage) {
helper.setText(R.id. tv_title , systemMessage.getSystem_message_title()).setText(R.id. tv_content , systemMessage.getMessage_content()) ;
}
} ;
listView.setAdapter( MineAdapter) ;
}
}
private void queryContent() {
BmobQuery<SystemMessage> bmobQuery = new BmobQuery<SystemMessage>() ;
bmobQuery.findObjects( this, new FindListener<SystemMessage>() {
@Override
public void onSuccess(List<SystemMessage> list) {
if (list == null || list.size() == 0) {
MineAdapter.notifyDataSetChanged() ;
return;
}
MineAdapter.addAll(list) ;
listView.setAdapter( MineAdapter) ;
}
@Override
public void onError( int i , String s) {
}
}) ;
}
}
import android.app.Activity ;
import android.os.Bundle ;
import android.view.Window ;
import android.widget.ListView ;
import com.apk.bilibili.R ;
import com.apk.bilibili.utils.BaseAdapterHelper ;
import com.apk.bilibili.utils.QuickAdapter ;
import com.apk.bilibili.utils.SystemMessage ;
import java.util.List ;
import cn.bmob.v3.Bmob ;
import cn.bmob.v3.BmobQuery ;
import cn.bmob.v3.listener.FindListener ;
public class MineThridImageButton extends Activity {
private ListView listView ;
protected QuickAdapter<SystemMessage> MineAdapter ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
requestWindowFeature(Window. FEATURE_NO_TITLE) ;
setContentView(R.layout. mine_thrid_imagebutton) ;
Bmob. initialize(MineThridImageButton. this, "4abc415ca666a3fa6301ad90a0d2fa8d") ;
listView=(ListView)findViewById(R.id. listview) ;
queryContent() ;
initData() ;
}
public void initData() {
// TODO Auto-generated method stub
if ( MineAdapter == null) {
MineAdapter = new QuickAdapter<SystemMessage>( this, R.layout. item_list) {
@Override
protected void convert(BaseAdapterHelper helper , SystemMessage systemMessage) {
helper.setText(R.id. tv_title , systemMessage.getSystem_message_title()).setText(R.id. tv_content , systemMessage.getMessage_content()) ;
}
} ;
listView.setAdapter( MineAdapter) ;
}
}
private void queryContent() {
BmobQuery<SystemMessage> bmobQuery = new BmobQuery<SystemMessage>() ;
bmobQuery.findObjects( this, new FindListener<SystemMessage>() {
@Override
public void onSuccess(List<SystemMessage> list) {
if (list == null || list.size() == 0) {
MineAdapter.notifyDataSetChanged() ;
return;
}
MineAdapter.addAll(list) ;
listView.setAdapter( MineAdapter) ;
}
@Override
public void onError( int i , String s) {
}
}) ;
}
}
这里需要说明一下Bmob的查询成功这个方法是需要异步调用的
但是官方文档刚好给出了我需要实现的这么一个功能,所以就直接拿来用了
这里需要几个工具类
QuickAdapter:
package com.apk.bilibili.utils
;
/**
* Copyright 2013 Joan Zapata
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.util.List ;
import android.content.Context ;
import android.view.View ;
import android.view.ViewGroup ;
import static com.apk.bilibili.utils.BaseAdapterHelper.get ;
/**
* Abstraction class of a BaseAdapter in which you only need
* to provide the convert() implementation. <br/>
* Using the provided BaseAdapterHelper, your code is minimalist.
* @param < T > The type of the items in the list.
*/
public abstract class QuickAdapter< T> extends BaseQuickAdapter< T , BaseAdapterHelper> {
/**
* Create a QuickAdapter.
* @param context The context.
* @param layoutResId The layout resource id of each item.
*/
public QuickAdapter(Context context , int layoutResId) {
super(context , layoutResId) ;
}
/**
* Same as QuickAdapter#QuickAdapter(Context,int) but with
* some initialization data.
* @param context The context.
* @param layoutResId The layout resource id of each item.
* @param data A new list is created out of this one to avoid mutable list
*/
public QuickAdapter(Context context , int layoutResId , List< T> data) {
super(context ,layoutResId ,data) ;
}
protected BaseAdapterHelper getAdapterHelper( int position , View convertView , ViewGroup parent) {
return get( context , convertView , parent , layoutResId , position) ;
}
}
/**
* Copyright 2013 Joan Zapata
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.util.List ;
import android.content.Context ;
import android.view.View ;
import android.view.ViewGroup ;
import static com.apk.bilibili.utils.BaseAdapterHelper.get ;
/**
* Abstraction class of a BaseAdapter in which you only need
* to provide the convert() implementation. <br/>
* Using the provided BaseAdapterHelper, your code is minimalist.
* @param < T > The type of the items in the list.
*/
public abstract class QuickAdapter< T> extends BaseQuickAdapter< T , BaseAdapterHelper> {
/**
* Create a QuickAdapter.
* @param context The context.
* @param layoutResId The layout resource id of each item.
*/
public QuickAdapter(Context context , int layoutResId) {
super(context , layoutResId) ;
}
/**
* Same as QuickAdapter#QuickAdapter(Context,int) but with
* some initialization data.
* @param context The context.
* @param layoutResId The layout resource id of each item.
* @param data A new list is created out of this one to avoid mutable list
*/
public QuickAdapter(Context context , int layoutResId , List< T> data) {
super(context ,layoutResId ,data) ;
}
protected BaseAdapterHelper getAdapterHelper( int position , View convertView , ViewGroup parent) {
return get( context , convertView , parent , layoutResId , position) ;
}
}
BaseQuickAdapter:
package com.apk.bilibili.utils
;
import android.content.Context ;
import android.view.Gravity ;
import android.view.View ;
import android.view.ViewGroup ;
import android.widget.BaseAdapter ;
import android.widget.FrameLayout ;
import android.widget.ProgressBar ;
import java.util.ArrayList ;
import java.util.List ;
/**
* Abstraction class of a BaseAdapter in which you only need
* to provide the convert() implementation. <br/>
* Using the provided BaseAdapterHelper, your code is minimalist.
* @param < T > The type of the items in the list.
*/
public abstract class BaseQuickAdapter< T , H extends BaseAdapterHelper> extends BaseAdapter {
protected static final String TAG = BaseQuickAdapter. class.getSimpleName() ;
protected final Context context ;
protected final int layoutResId ;
protected final List< T> data ;
protected boolean displayIndeterminateProgress = false;
/**
* Create a QuickAdapter.
* @param context The context.
* @param layoutResId The layout resource id of each item.
*/
public BaseQuickAdapter(Context context , int layoutResId) {
this(context , layoutResId , null) ;
}
/**
* Same as QuickAdapter#QuickAdapter(Context,int) but with
* some initialization data.
* @param context The context.
* @param layoutResId The layout resource id of each item.
* @param data A new list is created out of this one to avoid mutable list
*/
public BaseQuickAdapter(Context context , int layoutResId , List< T> data) {
this. data = data == null ? new ArrayList< T>() : new ArrayList< T>(data) ;
this. context = context ;
this. layoutResId = layoutResId ;
}
@Override
public int getCount() {
int extra = displayIndeterminateProgress ? 1 : 0 ;
return data.size() + extra ;
}
@Override
public T getItem( int position) {
if (position >= data.size()) return null;
return data.get(position) ;
}
@Override
public long getItemId( int position) {
return position ;
}
@Override
public int getViewTypeCount() {
return 2 ;
}
@Override
public int getItemViewType( int position) {
return position >= data.size() ?
import android.content.Context ;
import android.view.Gravity ;
import android.view.View ;
import android.view.ViewGroup ;
import android.widget.BaseAdapter ;
import android.widget.FrameLayout ;
import android.widget.ProgressBar ;
import java.util.ArrayList ;
import java.util.List ;
/**
* Abstraction class of a BaseAdapter in which you only need
* to provide the convert() implementation. <br/>
* Using the provided BaseAdapterHelper, your code is minimalist.
* @param < T > The type of the items in the list.
*/
public abstract class BaseQuickAdapter< T , H extends BaseAdapterHelper> extends BaseAdapter {
protected static final String TAG = BaseQuickAdapter. class.getSimpleName() ;
protected final Context context ;
protected final int layoutResId ;
protected final List< T> data ;
protected boolean displayIndeterminateProgress = false;
/**
* Create a QuickAdapter.
* @param context The context.
* @param layoutResId The layout resource id of each item.
*/
public BaseQuickAdapter(Context context , int layoutResId) {
this(context , layoutResId , null) ;
}
/**
* Same as QuickAdapter#QuickAdapter(Context,int) but with
* some initialization data.
* @param context The context.
* @param layoutResId The layout resource id of each item.
* @param data A new list is created out of this one to avoid mutable list
*/
public BaseQuickAdapter(Context context , int layoutResId , List< T> data) {
this. data = data == null ? new ArrayList< T>() : new ArrayList< T>(data) ;
this. context = context ;
this. layoutResId = layoutResId ;
}
@Override
public int getCount() {
int extra = displayIndeterminateProgress ? 1 : 0 ;
return data.size() + extra ;
}
@Override
public T getItem( int position) {
if (position >= data.size()) return null;
return data.get(position) ;
}
@Override
public long getItemId( int position) {
return position ;
}
@Override
public int getViewTypeCount() {
return 2 ;
}
@Override
public int getItemViewType( int position) {
return position >= data.size() ?