列表视图中的下载按钮

时间:2018-08-04 11:51:23

标签: android

我创建了一个自定义Listview,我想在其中添加下载按钮。当用户单击下载按钮,然后下载该文件,但我该怎么做。我创建了一个下载按钮,但是我不知道如何为该按钮编码。 代码

- name: Set IP Address on Linux
  vmware_vm_shell:
    vm_shell       : /usr/bin/sudo
    vm_shell_args  : ' /usr/sbin/ifconfig eth0 {{ network.subnet }}.{{ net }} netmask {{ network.netmask }} up'
    vm_shell_cwd   : /usr/sbin

- name: Wait for SSH port
  wait_for:
    port: 22
    delay: 20
    state: started

1 个答案:

答案 0 :(得分:0)

  1. 创建一个名为OnItemClickListener的接口

  2. 在界面内声明一个无效的onItemClick(int position)方法

  3. 创建OnItemClickListener接口的成员变量,并将其命名为mOnItemClickListener。

  4. 向OnItemClickListener类型的适配器构造函数添加一个新参数,并将其称为侦听器。

  5. 通过传递的参数侦听器初始化mItemClickListener。

  6. 对于onClick方法内的按钮(在这种情况下为下载按钮),调用mItemClickListener.onItemClick并将位置作为参数传递。

此处代码:

public class ListAdapter extends ArrayAdapter<pdf> {

//... your code

public interface OnItemClickListener{
    void onItemClick(int position);
}

private OnItemClickListener mOnItemClickListener;

public ListAdapter(Context context, int resource, List<pdf> pdfList, OnItemClickListener listener) {
    super(context, resource, pdfList);

    //... your code

    mOnItemClickListener = listener;
}

@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {

    //... you code

    ImageButton download = view.findViewById(R.id.download);
    download.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mOnItemClickListener.onItemClick(position);
        }
    });

    return view;

}

}

在“活动”中进行以下更改:

  1. 实施ListAdapter.OnItemClickListener

  2. 覆盖onItemClick方法

  3. 将“ this”作为ListAdapter的最后一个参数传递

  4. 让您将其列为活动中的成员变量,并将其命名为mPDF(根据您的情况可能有所不同)

  5. 在onItemClick内,您可以编写代码以进行下载或...,并且要知道单击了哪个项目,可以使用position参数。例如mPDF.get(position)将返回单击的pdf。

此处代码示例:

public class MainActivity extends AppCompatActivity
    implements ListAdapter.OnItemClickListener {

List<pdf> mPDF;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ListAdapter adapter = new ListAdapter(this, R.layout.what_ever, mPDF, this);

}

@Override
public void onItemClick(int position) {

    pdf clicked = mPDF.get(position);

    // now you can write your download code

}
}

享受吧。