2019-08-23

1·FragmentActivity是什么

源码解释

FragmentActivity is a special activity provided in the Support Library to handle fragments on system versions older than API level 11. If the lowest system version you support is API level 11 or higher, then you can use a regular Activity.

意思就是低版本的Android中,fragmentActivity可以直接当activity使用。

在项目中,编写BaseRxFragment时,使用了FragmentActivity。

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        this.mActivity = (FragmentActivity) context;
    }

还有

    protected FragmentActivity getFragmentActivity() {
        return mActivity;
    }

这样写增强了fragment的复用性,方便调用fragment所在的activity。从而实现了与fragment中控件的交互,对Activity造成影响。

2·ListView中,对Item的删除图标点击,如何传给ListView

编写回调接口来获取item里的icon。首先在Adapter里创建InnerCallback;然后在getView中,选择需要设置监听的空间,进行setOnClickListener(new ...);然后把InnerClickListener的点击事件innerclick放到onClick中,此时可以传入必要的参数,比如position,在adapter中设置setInnerClickListener;在fragment中implement这个InnerClickListener,然后让adapter.setInnerClickListen,在fragment中进行overwrite方法innerclick。代码如下:

MyDronesFragment.java

package com.qifeizn.android.fragment;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import com.qifeizn.android.R;
import com.qifeizn.android.adapter.DroneListAdapter;
import com.qifeizn.android.listener.InnerClickListener;
import com.qifeizn.android.view.DroneItem;

import java.util.ArrayList;



public class MyDronesFragment extends BaseRxFragment implements View.OnClickListener, InnerClickListener, AdapterView.OnItemClickListener {

    private ListView mListView;
    private ArrayList<DroneItem> mDroneList = new ArrayList<>();
    private DroneListAdapter mDroneListAdapter;

    @Override
    protected void initData() {
        DroneItem drone1 = new DroneItem("A161900050", R.drawable.v2_icon_135, "201905121314");
        DroneItem drone2 = new DroneItem("A161900051", R.drawable.v2_icon_136, "201905121314");
        DroneItem drone3 = new DroneItem("A161900052", R.drawable.v2_icon_137, "201905121314");
        mDroneList.add(drone1);
        mDroneList.add(drone2);
        mDroneList.add(drone3);
    }

    @Override
    protected void initEvent() {

    }

    @Override
    protected void initView() {
        initToolbar("我的飞机");

        mListView = (ListView) mView.findViewById(R.id.ls_drone_list);
        mDroneListAdapter = new DroneListAdapter(getContext(), R.layout.item_drone_info, mDroneList);
        mDroneListAdapter.setInnerClickListener(this);

        mListView.setAdapter(mDroneListAdapter);
        mListView.setOnItemClickListener(this);

        mView.findViewById(R.id.tv_add_drone).setOnClickListener(this);
    }

    @Override
    protected int getLayoutId() {
        return R.layout.fragment_my_drone;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.tv_add_drone:
                addFragment(R.id.fl_info_content,new NewDroneFragment());
                break;
        }
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    }

    @Override
    public void innerClick(int pos) {
        mDroneList.remove(pos);
        mDroneListAdapter.notifyDataSetChanged();
    }
}

DroneListAdapter.ja

package com.qifeizn.android.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.qifeizn.android.R;
import com.qifeizn.android.listener.InnerClickListener;
import com.qifeizn.android.view.DroneItem;
import java.util.List;


public class DroneListAdapter extends BaseAdapter {
    private List<DroneItem> mList;
    private LayoutInflater mLayoutInflater;
    private int mLayoutId;
    private InnerClickListener mInnerClickListener;
    private Context mContext;
    public DroneListAdapter(@NonNull Context context, int layoutId, @NonNull List<DroneItem> objects) {
        mLayoutInflater = LayoutInflater.from(context);
        mLayoutId = layoutId;
        mList = objects;
        mContext = context;
    }

    @Override
    public int getCount() {
        return mList == null ? 0 : mList.size();
    }

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public List<DroneItem> getDroneList(){
        return mList;
    }

    @NonNull
    @Override
    public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View view = mLayoutInflater.inflate(mLayoutId, null);
        DroneItem droneItem = (DroneItem) getItem(position);

        TextView tv_id = (TextView) view.findViewById(R.id.tv_drone_id);
        TextView tv_date = (TextView) view.findViewById(R.id.tv_drone_made_date);
        ImageView im_drone = (ImageView) view.findViewById(R.id.iv_drone_img);

        tv_id.setText(droneItem.getDroneId());
        tv_date.setText(droneItem.getMadeDate());
        im_drone.setImageResource(droneItem.getResourceId());

        view.findViewById(R.id.rl_delete_drone).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mInnerClickListener.innerClick(position);
            }
        });
        return view;
    }
    public void setInnerClickListener(InnerClickListener innerClickListener){
        mInnerClickListener = innerClickListener;
    }

}

3·宽屏的适配问题

用matchparent,然后用marginstartend进行调整。比直接写死要好

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4237次浏览 75人参与
# AI面会问哪些问题? #
27346次浏览 548人参与
# 米连集团26产品管培生项目 #
13271次浏览 285人参与
# 你的实习产出是真实的还是包装的? #
19973次浏览 342人参与
# 找AI工作可以去哪些公司? #
8806次浏览 228人参与
# 春招至今,你的战绩如何? #
64123次浏览 575人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14979次浏览 220人参与
# 从事AI岗需要掌握哪些技术栈? #
8694次浏览 296人参与
# 你做过最难的笔试是哪家公司 #
32770次浏览 226人参与
# 中国电信笔试 #
31627次浏览 285人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340658次浏览 2173人参与
# 阿里笔试 #
178225次浏览 1311人参与
# 第一份工作一定要去大厂吗 #
14318次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22006次浏览 280人参与
# 沪漂/北漂你觉得哪个更苦? #
9702次浏览 193人参与
# HR最不可信的一句话是__ #
6124次浏览 113人参与
# 应届生第一份工资要多少合适 #
20660次浏览 86人参与
# AI时代,哪个岗位还有“活路” #
11369次浏览 339人参与
# 春招你拿到offer了吗 #
830972次浏览 9986人参与
# 长得好看会提高面试通过率吗? #
22430次浏览 254人参与
# 聊聊你的职场新体验 #
336397次浏览 1894人参与
# 学历对求职的影响 #
665009次浏览 4249人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务