import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.json.JSONObject;
import java.util.List;
public class Fragment1 extends Fragment {
private final MainActivity mainActivity;
private Fragment1Binding binding;
private final Handler handler = new Handler(Looper.getMainLooper());
private final Runnable runnable = new Runnable() {
@Override
public void run() {
int value = binding.vp.getCurrentItem();
binding.vp.setCurrentItem(value + 1);
handler.postDelayed(this, 3000);
}
};
public Fragment1(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = Fragment1Binding.inflate(inflater);
getSearchView();
getViewPager();
getGv();
getHotList();
getTab();
getList(9);
return binding.getRoot();
}
private void getList(int i) {
HttpUtil.get("/prod-api/press/press/list?type=" + i, new HttpUtil.HttpCallback() {
@Override
public void onResponse(String response) {
List<NewXw> rows = new Gson().fromJson(
new JSONObject(response).optJSONArray("rows").toString(),
new TypeToken<List<NewXw>>() {}.getType()
);
rows.sort((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime()));
binding.list.setAdapter(new BaseReAdapter<XwItemBinding, NewXw>(rows, XwItemBinding::inflate) {
@Override
protected void setData(XwItemBinding binding, NewXw data, int position) {
if (data.getCover() != null) {
binding.image.loadImg(data.getCover());
}
binding.title.setText(data.getTitle());
binding.body.setText(Html.fromHtml(data.getContent()));
binding.pls.setText("评论数:" + data.getCommentNum());
binding.time.setText(data.getCreateTime());
}
});
}
});
}
private void getTab() {
HttpUtil.get("/prod-api/press/category/list", new HttpUtil.HttpCallback() {
@Override
public void onResponse(String response) {
List<NewXwTab> rows = new Gson().fromJson(
new JSONObject(response).optJSONArray("data").toString(),
new TypeToken<List<NewXwTab>>() {}.getType()
);
for (NewXwTab tab : rows) {
binding.tabLayout.addTab(binding.tabLayout.newTab().setText(tab.getName()));
}
binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
getList(rows.get(tab.getPosition()).getId());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {}
@Override
public void onTabReselected(TabLayout.Tab tab) {}
});
}
});
}
private void getHotList() {
HttpUtil.get("/prod-api/press/press/list?hot=y", new HttpUtil.HttpCallback() {
@Override
public void onResponse(String response) {
List<NewXw> rows = new Gson().fromJson(
new JSONObject(response).optJSONArray("rows").toString(),
new TypeToken<List<NewXw>>() {}.getType()
);
binding.hotList.setAdapter(new BaseReAdapter<RmztItemBinding, NewXw>(rows, RmztItemBinding::inflate) {
@Override
protected void setData(RmztItemBinding binding, NewXw data, int position) {
binding.image.loadImg(data.getCover());
binding.title.setText(data.getTitle());
binding.layout.setOnClickListener(v -> {
startActivity(new Intent(mainActivity, HotActivity.class)
.putExtra("data", data));
});
}
});
}
});
}
private void getGv() {
HttpUtil.get("/prod-api/api/service/list", new HttpUtil.HttpCallback() {
@Override
public void onResponse(String response) {
List<NewGv> rows = new Gson().fromJson(
new JSONObject(response).optJSONArray("rows").toString(),
new TypeToken<List<NewGv>>() {}.getType()
);
rows.sort((o1, o2) -> Integer.compare(o2.getSort(), o1.getSort()));
binding.gv.setAdapter(new BaseReAdapter<GvItemBinding, NewGv>(rows, GvItemBinding::inflate) {
@Override
protected void setData(GvItemBinding binding, NewGv data, int position) {
if (position == 9) {
binding.image.setImageResource(R.drawable.gdfw);
binding.title.setText("更多服务");
} else {
binding.image.loadImg(data.getImgUrl());
binding.title.setText(data.getServiceName());
}
binding.layout.setOnClickListener(v -> {
switch (binding.title.getText().toString()) {
case "青年驿站":
startActivity(new Intent(mainActivity, QnyzActivity.class));
break;
case "更多服务":
mainActivity.binding.vp.setCurrentItem(1);
mainActivity.binding.bottom.setSelectedItemId(R.id.item2);
break;
default:
startActivity(new Intent(mainActivity, TempActivity.class)
.putExtra("data", data.getServiceName()));
}
});
}
@Override
public int getItemCount() {
return 10;
}
});
}
});
}
private void getViewPager() {
HttpUtil.get("/prod-api/api/rotation/list", new HttpUtil.HttpCallback() {
@Override
public void onResponse(String response) {
List<NewBanner> rows = new Gson().fromJson(
new JSONObject(response).optJSONArray("rows").toString(),
new TypeToken<List<NewBanner>>() {}.getType()
);
binding.vp.setAdapter(new BannerReAdapter<BannerItemBinding, NewBanner>(rows, BannerItemBinding::inflate) {
@Override
protected void setData(BannerItemBinding binding, NewBanner data, int position) {
int positionData = position % rows.size();
binding.imageView.loadImg(rows.get(positionData).getAdvImg());
binding.imageView.setOnClickListener(v -> {
startActivity(new Intent(mainActivity, BannerActivity.class)
.putExtra("data", data.getAdvImg()));
});
}
@Override
public int getItemCount() {
return Integer.MAX_VALUE;
}
});
binding.vp.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
switch (position % rows.size()) {
case 0:
setIndicatorBackground(R.drawable.ydy_item1, R.drawable.ydy_item2,
R.drawable.ydy_item2, R.drawable.ydy_item2,
R.drawable.ydy_item2, R.drawable.ydy_item2);
break;
case 1:
setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item1,
R.drawable.ydy_item2, R.drawable.ydy_item2,
R.drawable.ydy_item2, R.drawable.ydy_item2);
break;
case 2:
setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item2,
R.drawable.ydy_item1, R.drawable.ydy_item2,
R.drawable.ydy_item2, R.drawable.ydy_item2);
break;
case 3:
setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item2,
R.drawable.ydy_item2, R.drawable.ydy_item1,
R.drawable.ydy_item2, R.drawable.ydy_item2);
break;
case 4:
setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item2,
R.drawable.ydy_item2, R.drawable.ydy_item2,
R.drawable.ydy_item1, R.drawable.ydy_item2);
break;
case 5:
setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item2,
R.drawable.ydy_item2, R.drawable.ydy_item2,
R.drawable.ydy_item2, R.drawable.ydy_item1);
break;
}
}
private void setIndicatorBackground(int view1Res, int view2Res, int view3Res,
int view4Res, int view5Res, int view6Res) {
binding.view1.setBackgroundResource(view1Res);
binding.view2.setBackgroundResource(view2Res);
binding.view3.setBackgroundResource(view3Res);
binding.view4.setBackgroundResource(view4Res);
binding.view5.setBackgroundResource(view5Res);
binding.view6.setBackgroundResource(view6Res);
}
});
}
});
}
@Override
public void onResume() {
super.onResume();
handler.postDelayed(runnable, 3000);
}
@Override
public void onStop() {
super.onStop();
handler.removeCallbacks(runnable);
}
@Override
public void onDestroy() {
super.onDestroy();
handler.removeCallbacks(runnable);
}
private void getSearchView() {
binding.searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
String data = query;
startActivity(new Intent(mainActivity, SearchActivity.class)
.putExtra("data", data));
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
}
// Helper method to start activity
private void startActivity(Intent intent) {
mainActivity.startActivity(intent);
}
}解释每一行代码(中文解释)
最新发布