将元素添加到Listview的顶部

时间:2014-02-02 05:58:15

标签: android android-listview

我正在开发一款应用程序,其功能如下:

  1. 根据网址加载来自互联网的10张图片。

  2. 在开始时,10个网址位于传递给我的baseadapter类的arraylist中。列表视图的顶部是2个按钮。

  3. 一旦在顶部添加图像(按钮2),添加到底部的图像(按钮1)。我似乎无法将图像添加到listview的开头(R.Id.Button2下的代码)

  4. 目前只是将图片放在底部。

         public class MainActivity extends Activity implements OnClickListener {
    
    String dirPath;
    MyAdapter Ada;
    Button B,B2;
     ListView L;
     ArrayList<String> data= new ArrayList<String>();
     ArrayList<String> FirstList = new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        B= (Button)findViewById(R.id.button1);
        B2 =(Button)findViewById(R.id.button2);
         dirPath = getFilesDir().getAbsolutePath() + File.separator + "newfoldername";
    
        FirstList.add("url 1");
        FirstList.add("url 2");
        FirstList.add("url 3");
        FirstList.add("url 4");
        FirstList.add("url 5");
        FirstList.add("url 6");
        FirstList.add("url 7");
        FirstList.add("url 8");
        FirstList.add("url 9");
        FirstList.add("url 10);
        L=(ListView) findViewById(R.id.listView1);
        B.setOnClickListener(this);
        B2.setOnClickListener(this);
        data= (ArrayList<String>) FirstList.clone();
    
    
    
         Ada = new MyAdapter(MainActivity.this,data,dirPath);
        L.setAdapter(Ada);
    
    
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
    
    
    
        switch(v.getId())
        {
           case R.id.button1:
               data.add("url 11");
               Ada.notifyDataSetChanged();
    
            break;
    
           case R.id.button2:
               ArrayList<String> n = new ArrayList<String>();
               n.add("url 12");
    
                 n.addAll(data);
    
    
                Ada = new MyAdapter(MainActivity.this,n,dirPath);
                L.setAdapter(Ada);
                Ada.notifyDataSetChanged();
    
    
               break;
    
    
    
    
    
        }
    
     }
    
    
    
       }
    

2 个答案:

答案 0 :(得分:0)

方法list.add()将始终在底部添加项目。要将项目添加到列表顶部,请尝试:

1. Create an empty list, and add the new item into the list
2. using addAll method of the new list created, add the first list 
that has all the other elements
3. Pass the new list that is populated to the adapter class, 
or replace the old list with the new list

结果: 您要添加的项目现在位于顶部。

希望提示有帮助!

答案 1 :(得分:0)

基本上,Rat-a-tat-a-tat Ratatouille的回答几乎完成,我将在这些阶段做出的唯一改变是:

  1. 创建一个空列表并向其添加一个对象。

  2. 手动或使用addAll添加一堆新对象。

  3. 使用this XML value从底部定义要堆叠的列表。

  4. 将新列表传递给适配器。

  5. 致电Adapter.notifyDatasetChanged()