package com.gzsll.hupu.ui.report;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.gzsll.hupu.R;
import com.gzsll.hupu.ui.BaseSwipeBackActivity;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* Created by sll on 2016/3/11.
*/
public class ReportActivity extends BaseSwipeBackActivity implements ReportContract.View {
public static void startActivity(Context mContext, String tid, String pid) {
Intent intent = new Intent(mContext, ReportActivity.class);
intent.putExtra("tid", tid);
intent.putExtra("pid", pid);
mContext.startActivity(intent);
}
@Inject
ReportPresenter mPresenter;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.lvTypes)
ListView lvTypes;
@BindView(R.id.etContent)
EditText etContent;
private List<String> list = new ArrayList<>();
private ReportAdapter adapter;
private int type = 1;
private MaterialDialog mDialog;
private String tid;
private String pid;
@Override
public int initContentView() {
return R.layout.activity_report;
}
@Override
public void initInjector() {
DaggerReportComponent.builder()
.applicationComponent(getApplicationComponent())
.activityModule(getActivityModule())
.reportModule(new ReportModule())
.build()
.inject(this);
}
@Override
public void initUiAndListener() {
ButterKnife.bind(this);
mPresenter.attachView(this);
initToolBar(toolbar);
setTitle("举报");
pid = getIntent().getStringExtra("pid");
tid = getIntent().getStringExtra("tid");
mDialog =
new MaterialDialog.Builder(this).title("提示").content("正在举报").progress(true, 0).build();
initData();
adapter = new ReportAdapter();
lvTypes.setAdapter(adapter);
setListViewHeightBasedOnChildren(lvTypes);
lvTypes.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
adapter.notifyDataSetChanged();
type = position + 1;
}
});
}
private void initData() {
list.add("\u5e7f\u544a\u6216\u5783\u573e\u5185\u5bb9");
list.add("\u8272\u60c5\u66b4\u9732\u5185\u5bb9");
list.add("\u653f\u6cbb\u654f\u611f\u8bdd\u9898");
list.add("\u4eba\u8eab\u653b\u51fb\u7b49\u6076\u610f\u884c\u4e3a");
}
public void setListViewHeightBasedOnChildren(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
// listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
// 计算子项View 的宽高
listItem.measure(0, 0);
// 统计所有子项的总高度
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// listView.getDividerHeight()获取子项间分隔符占用的高度
// params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
}
@Override
protected boolean isApplyStatusBarTranslucency() {
return true;
}
@Override
protected boolean isApplyStatusBarColor() {
return true;
}
@Override
public void showLoading() {
if (!mDialog.isShowing() && !isFinishing()) {
mDialog.show();
}
}
@Override
public void hideLoading() {
if (mDialog.isShowing() && !isFinishing()) {
mDialog.dismiss();
}
}
@Override
public void reportSuccess() {
}
@OnClick(R.id.btCommit)
void btCommitClick() {
mPresenter.submitReports(tid, pid, String.valueOf(type), etContent.getText().toString());
}
public class ReportAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public String getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(ReportActivity.this)
.inflate(R.layout.item_list_report, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (lvTypes.isItemChecked(position)) {
holder.ivCheck.setVisibility(View.VISIBLE);
} else {
holder.ivCheck.setVisibility(View.GONE);
}
holder.tvType.setText(getItem(position));
return convertView;
}
class ViewHolder {
@BindView(R.id.tvType)
TextView tvType;
@BindView(R.id.ivCheck)
ImageView ivCheck;
ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mPresenter.detachView();
}
}