如何在android中动态地为列表添加值?

时间:2016-06-24 08:05:59

标签: java android list listview arraylist

我有一个列表,我可以静态分配值。

    private List<ListData> mDataList = Arrays.asList(
        new ListData("Arun"),
        new ListData("Jega"),
        new ListData("Kabilan"),
        new ListData("Karthick"),
        new ListData("Joushva"),
        new ListData("Niranjana"),
        new ListData("Paramesh"),
        new ListData("Prabha"),new ListData("Test1"),new ListData("Test2")   );

问题是现在我有一个场景,我应该从web apim动态获取这些值,我必须将它设置为List变量mDataList。 请帮我清除这个。提前致谢。 这是我的完整代码。

     public class ReportFragment extends Fragment {
View ParentView;
private static final int HIGHLIGHT_COLOR = 0x999be6ff;

// list of data items
private List<ListData> mDataList = Arrays.asList(
        new ListData("Arun"),
        new ListData("Jega"),
        new ListData("Kabilan"),
        new ListData("Karthick"),
        new ListData("Joushva"),
        new ListData("Niranjana"),
        new ListData("Paramesh"),
        new ListData("Prabha"),new ListData("Test1"),new ListData("Test2")

);
// declare the color generator and drawable builder
private ColorGenerator mColorGenerator = ColorGenerator.MATERIAL;
private TextDrawable.IBuilder mDrawableBuilder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ParentView= inflater.inflate(R.layout.report_fragment, container, false);
    init();
    return  ParentView;
}
public void init(){
    mDrawableBuilder = TextDrawable.builder()
            .round();
    // init the list view and its adapter
   final ListView listView = (ListView) ParentView.findViewById(R.id.listView1);
    listView.setAdapter(new SampleAdapter());
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {


        }

    });
}
private class SampleAdapter extends BaseAdapter {

    @Override
    public int getCount() {
        return mDataList.size();
    }

    @Override
    public ListData getItem(int position) {
        return mDataList.get(position);
    }

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        if (convertView == null) {
            convertView = View.inflate(getActivity() , R.layout.list_item_layout, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        ListData item = getItem(position);

        // provide support for selected state
        updateCheckedState(holder, item);
        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // when the image is clicked, update the selected state
                ListData data = getItem(position);
                data.setChecked(!data.isChecked);
                updateCheckedState(holder, data);
            }
        });
        holder.textView.setText(item.data);

        return convertView;
    }

    private void updateCheckedState(ViewHolder holder, ListData item) {
        if (item.isChecked) {
            holder.imageView.setImageDrawable(mDrawableBuilder.build(" ", 0xff616161));
            holder.view.setBackgroundColor(HIGHLIGHT_COLOR);
            holder.checkIcon.setVisibility(View.VISIBLE);
        }
        else {
            TextDrawable drawable = mDrawableBuilder.build(String.valueOf(item.data.charAt(0)), mColorGenerator.getColor(item.data));
            holder.imageView.setImageDrawable(drawable);
            holder.view.setBackgroundColor(Color.TRANSPARENT);
            holder.checkIcon.setVisibility(View.GONE);
        }
    }
}

private static class ViewHolder {

    private View view;

    private ImageView imageView;

    private TextView textView;

    private ImageView checkIcon;

    private ViewHolder(View view) {
        this.view = view;
        imageView = (ImageView) view.findViewById(R.id.imageView);
        textView = (TextView) view.findViewById(R.id.textView);
        checkIcon = (ImageView) view.findViewById(R.id.check_icon);
    }
}

private static class ListData {

    private String data;

    private boolean isChecked;

    public ListData(String data) {
        this.data = data;
    }

    public void setChecked(boolean isChecked) {
        this.isChecked = isChecked;
    }
}

}

2 个答案:

答案 0 :(得分:2)

创建一个在适配器类中添加项的方法,此方法将添加项 ITEMLIST。这将在列表或网格上动态添加项目。 例如

public void addItem(Item item){
      itemList.add(item);
     notifydatasetchanged();}

答案 1 :(得分:0)

创建一个适配器类和构造函数,在构造函数中只需初始化项arraylist并创建名为addItem()的额外方法,此方法将向您的arraylist添加项。之后你只需要调用notifyDatasetchanged,你的新项目就会被添加。