android 历史搜索布局,GitHub - Brookeryang/MultiFlowLayout: Android 流式布局FlowLayout(搜索历史),可多布局、点击删除、添加等操作,暂无...

微信公众号

使用方法

将libray模块复制到项目中,或者直接在build.gradle中依赖:

allprojects {

repositories {

maven { url 'https://jitpack.io' }

}

}

dependencies {

compile 'com.github.AnJiaoDe:MultiFlowLayout:V1.1.2'

}

注意:如果sync报错,是因为和com.android.tools.build:gradle 3.0有关,

可以改将compile改为implementation 或者api

1.TextView

0fe718bf30df9b67f82f87411ba1fe10.gif

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/fl"

android:layout_width="match_parent"

app:width_space="10dp"//宽间距

app:height_space="10dp"//高间距

android:padding="10dp"

android:layout_height="400dp">

public class TVActivity extends BaseActivity {

private FlowLayoutAdapter flowLayoutAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_tv);

List list=new ArrayList<>();

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

list.add("的富");

flowLayoutAdapter=new FlowLayoutAdapter(list) {

@Override

public void bindDataToView(ViewHolder holder, int position, String bean) {

holder.setText(R.id.tv,bean);

}

@Override

public void onItemClick(int position, String bean) {

showToast("点击"+position);

}

@Override

public int getItemLayoutID(int position, String bean) {

return R.layout.item_tv;

}

};

((FlowLayout)findViewById(R.id.fl)).setAdapter(flowLayoutAdapter);

}

@Override

public void onClick(View v) {

}

}

2.TextView+Scroll

2.gif

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/flsv"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:padding="10dp"

app:height_space="10dp"

app:width_space="10dp">

public class TVScrollActivity extends BaseActivity {

private FlowLayoutAdapter flowLayoutAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_tvscroll);

List list=new ArrayList<>();

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

flowLayoutAdapter=new FlowLayoutAdapter(list) {

@Override

public void bindDataToView(ViewHolder holder, int position, String bean) {

holder.setText(R.id.tv,bean);

}

@Override

public void onItemClick(int position, String bean) {

showToast("点击"+position);

}

@Override

public int getItemLayoutID(int position, String bean) {

return R.layout.item_tv;

}

};

((FlowLayoutScrollView)findViewById(R.id.flsv)).setAdapter(flowLayoutAdapter);

}

@Override

public void onClick(View v) {

}

}

3.layout+scroll+remove+add

3.gif

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/flsv"

android:padding="6dp"

android:layout_width="match_parent"

android:layout_height="match_parent">

public class LayoutScrollActivity extends BaseActivity {

private FlowLayoutAdapter flowLayoutAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_layout);

List list=new ArrayList<>();

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

flowLayoutAdapter = new FlowLayoutAdapter(list) {

@Override

public void bindDataToView(ViewHolder holder, int position, String bean) {

holder.setText(R.id.tv,bean);

}

@Override

public void onItemClick(int position, String bean) {

remove(position);

}

@Override

public int getItemLayoutID(int position, String bean) {

return R.layout.item_layout;

}

};

((FlowLayoutScrollView)findViewById(R.id.flsv)).setAdapter(flowLayoutAdapter);

}

@Override

public void onClick(View v) {

}

}

4.layout+multi+scroll+remove+add

4.gif

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/flsv"

android:padding="6dp"

android:layout_width="match_parent"

android:layout_height="match_parent">

public class LayoutMultiScrollActivity extends BaseActivity {

private FlowLayoutAdapter flowLayoutAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_layout_multi_scroll);

List list=new ArrayList<>();

list.add("会囧哥");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

list.add("环境");

list.add("环境");

list.add("如果皇太后");

list.add("人皇太后");

list.add("环境");

list.add("然后");

list.add("环境");

list.add("环境");

list.add("然后钛合金");

list.add("环境");

list.add("任何人挺好");

list.add("环境");

list.add("发个黄庭坚");

list.add("环境");

list.add("分分然后");

list.add("环境");

list.add("环境");

list.add("凤凰台和");

list.add("环境");

list.add("环境");

list.add("环境");

list.add("发个荣誉感");

list.add("环境");

list.add("复合肥");

list.add("环境");

list.add("发然后");

list.add("环的风格让他很认同和境");

list.add("的富贵华庭");

flowLayoutAdapter = new FlowLayoutAdapter(list) {

@Override

public void bindDataToView(ViewHolder holder, int position, String bean) {

holder.setText(R.id.tv,bean);

}

@Override

public void onItemClick(int position, String bean) {

if (position==0||position==1||position==2){

return;

}

remove(position);

}

@Override

public int getItemLayoutID(int position, String bean) {

if (position==0||position==1||position==2){

return R.layout.item_layout2;

}

return R.layout.item_layout;

}

};

((FlowLayoutScrollView)findViewById(R.id.flsv)).setAdapter(flowLayoutAdapter);

}

@Override

public void onClick(View v) {

}

}

FlowLayoutAdapter:

public abstract class FlowLayoutAdapter {

private OnDataSetChangedListener onDataSetChangedListener;

private List list_bean;

public FlowLayoutAdapter( List list_bean) {

this.list_bean = list_bean;

}

public int getCount() {

return list_bean.size();

}

public final View getView(FlowLayout parent, final int position) {

View view = LayoutInflater.from(parent.getContext()).inflate(getItemLayoutID(position, list_bean.get(position)), parent, false);

view.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

onItemClick(position, list_bean.get(position));

}

});

view.setOnLongClickListener(new View.OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

onItemLongClick(position,list_bean.get(position));

return true;

}

});

bindDataToView(new ViewHolder(view), position, list_bean.get(position));

return view;

}

//填充数据

public abstract void bindDataToView(ViewHolder holder, int position, T bean);

/*

ItemView的单击事件

@param position

*/

public abstract void onItemClick(int position, T bean);

public void onItemLongClick(int position, T bean){}

/*

取得ItemView的布局文件

@return

*/

public abstract int getItemLayoutID(int position, T bean);

public void remove(int position) {

list_bean.remove(position);

notifyDataSetChanged();

}

public void add(T bean) {

list_bean.add(bean);

notifyDataSetChanged();

}

public void notifyDataSetChanged(){

if(onDataSetChangedListener!=null){

onDataSetChangedListener.onDataSetChanged();

}

}

public void addNoNotify(T bean) {

list_bean.add(bean);

}

public void addToHead(T bean) {

list_bean.add(0, bean);

}

public int addAll(List beans) {

list_bean.addAll(beans);

notifyDataSetChanged();

return beans.size();

}

public void addAll(Collection c) {

list_bean.addAll(c);

notifyDataSetChanged();

}

public int clearAddAll(List beans) {

list_bean.clear();

list_bean.addAll(beans);

notifyDataSetChanged();

return beans.size();

}

public void addAllToHead(List beans) {

list_bean.addAll(0, beans);

notifyDataSetChanged();

}

public void clear() {

list_bean.clear();

notifyDataSetChanged();

}

public void setOnDataSetChangedListener(OnDataSetChangedListener onDataSetChangedListener) {

this.onDataSetChangedListener = onDataSetChangedListener;

}

public interface OnDataSetChangedListener{

public void onDataSetChanged();

}

public static class ViewHolder {

private View itemView;

private SparseArray array_view;

public ViewHolder(View itemView) {

this.itemView = itemView;

array_view = new SparseArray();

}

public T getView(int viewId) {

View view = array_view.get(viewId);

if (view == null) {

view = itemView.findViewById(viewId);

array_view.put(viewId, view);

}

return (T) view;

}

public ViewHolder setVisible(int res_id) {

getView(res_id).setVisibility(View.VISIBLE);

return this;

}

public ViewHolder setInVisible(int res_id) {

getView(res_id).setVisibility(View.INVISIBLE);

return this;

}

public void setViewGone(int res_id) {

getView(res_id).setVisibility(View.GONE);

}

public void setViewVisible(int res_id) {

getView(res_id).setVisibility(View.VISIBLE);

}

public void setText(int tv_id, String text) {

TextView tv = getView(tv_id);

tv.setText(nullToString(text));

}

public String nullToString(Object object) {

return object == null ? "" : object.toString();

}

public void setPriceText(int tv_id, String text) {

TextView tv = getView(tv_id);

tv.setText("¥" + text);

}

public void setCountText(int tv_id, String text) {

TextView tv = getView(tv_id);

tv.setText("x" + text);

}

public void setCountText(int tv_id, int text) {

TextView tv = getView(tv_id);

tv.setText("x" + text);

}

public void setPriceText(int tv_id, int text) {

TextView tv = getView(tv_id);

tv.setText("¥" + text);

}

public void setPriceText(int tv_id, float text) {

TextView tv = getView(tv_id);

tv.setText("¥" + text);

}

public void setText(int tv_id, int text) {

TextView tv = getView(tv_id);

tv.setText(String.valueOf(nullToString(text)));

}

public void setTextColor(int tv_id, int color) {

TextView tv = getView(tv_id);

tv.setTextColor(color);

}

public String getTVText(int tv_id) {

TextView tv = getView(tv_id);

return tv.getText().toString().trim();

}

public String getETText(int tv_id) {

EditText tv = getView(tv_id);

return tv.getText().toString().trim();

}

public void setBackgroundResource(int v_id, int resid) {

View view = getView(v_id);

view.setBackgroundResource(resid);

}

public void setImageBitmap(int v_id, Bitmap bitmap) {

ImageView view = getView(v_id);

view.setImageBitmap(bitmap);

}

public void setImageResource(int v_id, int resID) {

ImageView view = getView(v_id);

view.setImageResource(resID);

}

public void setProgress(int progress_id, int progress) {

ProgressBar progressBar = getView(progress_id);

progressBar.setProgress(progress);

}

public void setOnClickListener(int res_id, View.OnClickListener onClickListener) {

getView(res_id).setOnClickListener(onClickListener);

}

public void setOnLongClickListener(int res_id, View.OnLongClickListener onLongClickListener) {

getView(res_id).setOnLongClickListener(onLongClickListener);

}

}

}

更新日志

V1.1.1

Android 流式布局FlowLayout(搜索历史),可多布局、点击删除、添加等操作,暂无类似RecyclerView布局复用的处理,所以数据不应添加过多

License

Copyright [AnJiaoDe] [name of copyright owner]

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.

微信公众号

QQ群

687474703a2f2f75706c6f61642d696d616765732e6a69616e7368752e696f2f75706c6f61645f696d616765732f31313836363037382d386661303238656637393934386537353f696d6167654d6f6772322f6175746f2d6f7269656e742f7374726970253743696d61676556696577322f322f772f31323430

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值