1.朋友圈listview适配器
import android.content.Context;
import android.content.Intent;
import android.nfc.Tag;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
/**
*
**/
public class MyListViewAdapter extends BaseAdapter {
private int [] imgs={
R.mipmap.song4,
R.mipmap.song3,
R.mipmap.song2,
R.mipmap.song1
};
ArrayList<HashMap<String,Object>> imgeList;
//初始化
private Context context;
//初始化
public MyListViewAdapter(Context context){
this.context=context;
imgeList=new ArrayList<>();
for (int a=0;a<4;a++){
HashMap<String,Object> hashMap=new HashMap<String,Object>();
hashMap.put("image",imgs[a]);
imgeList.add(hashMap);
}
}
@Override
public int getCount() {
return 4;
}
@Override
public Object getItem(int position) {
return position;//当前这个位置
}
@Override
public long getItemId(int position) {
return 4;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyHolder myHolder=new MyHolder();
//如果view为空,主动添加视图
if(convertView==null){
convertView= LayoutInflater.from(context).inflate(R.layout.list_item_layout,null);
myHolder.ttitletv=convertView.findViewById(R.id.list_title_text);
myHolder.titleiv=convertView.findViewById(R.id.list_title_image);
myHolder.myGridView=convertView.findViewById(R.id.list_item_gradview);
convertView.setTag(myHolder);
}else{
myHolder= (MyHolder) convertView.getTag();
}
myHolder.ttitletv.setText("这是朋友圈的第"+(position+1)+"个数");
SimpleAdapter simpleAdapter=new SimpleAdapter(context,imgeList,R.layout.grid_item_layout,new String []{"image"},new int[]{R.id.grid_item_image});
myHolder.myGridView.setAdapter(simpleAdapter);
myHolder.myGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("", "onItemClick: 下标---"+position );
Intent intent=new Intent(context,ShowImgActivity.class);
intent.putExtra("index",position);
intent.putExtra("image",imgs);
context.startActivity(intent);
}
});
return convertView;
}
//设置Item控件的
class MyHolder{
ImageView titleiv;
TextView ttitletv;
MyGridView myGridView;
}
}
2.图片宫格样式的自定义
GridView类
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
*
**/
public class MyGridView extends GridView {
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//测量GridView的高度 我们listview嵌套GridView的时候显示全,返回GridView高度
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
//计算好的expandSpec 传入到下面这个方法
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
3.主页面类
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView;
private MyListViewAdapter myListViewAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=findViewById(R.id.listview);
myListViewAdapter=new MyListViewAdapter(MainActivity.this);
listView.setAdapter(myListViewAdapter);
}
}
4.预览图片适配器
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import java.util.List;
/**
*
**/
public class MypagerAdapter extends PagerAdapter {
private List<View> list;
public MypagerAdapter (List<View> list){
this.list=list;
}
@Override
public int getCount() {
if(list!=null&&list.size()>0){
return list.size();
}else{
return 0;
}
}
public boolean isViewFromObject(View v,Object object){
return v==object;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
// 将view添加到viewgroup中
container.addView(list.get(position));
return list.get(position);
}
}
5.预览界面代码
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;
/**
*
**/
public class ShowImgActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<View> listview;
private int index=0;
private MypagerAdapter mypagerAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_image_layout);
init();
}
private void init() {
final Intent intent=getIntent();
viewPager=findViewById(R.id.myviewpager);
listview=new ArrayList<View>();
int lenget=intent.getIntArrayExtra("image").length;
int [] imgInt=intent.getIntArrayExtra("image");
Log.e("TAG", "init: ----"+lenget);
for (int a=0;a<lenget;a++){
View view= LayoutInflater.from(getApplicationContext()).inflate(R.layout.view_pager_item,null);
ImageView imageView=view.findViewById(R.id.view_image);
imageView.setBackgroundResource(imgInt[a]);
listview.add(view);
}
mypagerAdapter=new MypagerAdapter(listview);
viewPager.setAdapter(mypagerAdapter);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//显示指定的数据
index=position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewPager.setCurrentItem(2);
}
}