마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트 뷰에서 버튼을 누르면 리스트 뷰를 지우고 싶습니다.

0 추천
package com.example.asw20130514;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Configuration;

import android.support.v4.app.NotificationCompat.Action;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnItemClickListener
	{
	 
    private final ArrayList<Action> actions = new ArrayList<Action>();
    private ActionListAdapter adapter;
    private Button button;
    private ImageView imageView;
    private ImageButton ImageButton;

	//TextView textView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ListView listView = (ListView)findViewById(R.id.list);

        actions.add(new Action(Action.FORWARD));
        actions.add(new Action(Action.TURN_LEFT));

        adapter = new ActionListAdapter(this, actions);
        listView.setAdapter(adapter);
      //  listview.setOnItemClickListener(this);
        
   

	}

	@Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {
      //  PhoneInfo pi = phones.get(position);
      //  Toast.makeText(this, pi.name, Toast.LENGTH_SHORT).show();
    }

	@Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
	
	
	@Override
	public void onConfigurationChanged(Configuration newConfig)
	{
	    
	    super.onConfigurationChanged(newConfig);
	}

	
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
    	switch(item.getItemId())
        {
            case R.id.add_front:
            	 actions.add(new Action(Action.FORWARD));
                 adapter.notifyDataSetChanged();
                return true;
            case R.id.add_left:
           	    actions.add(new Action(Action.TURN_LEFT));
                adapter.notifyDataSetChanged();
               return true;
            case R.id.delete:
                actions.remove(0);
                adapter.notifyDataSetChanged();
                return true;
            case R.id.button:
                actions.remove(1);
                adapter.notifyDataSetChanged();
                return true;
                
            case R.id.edit:
                return true;
        }
        return super.onOptionsItemSelected(item);
    }


    private static final class Action
    {
        int id;
        int icon;
        int name;

        private final int[] icons = new int[] { R.drawable.forward_on, R.drawable.left_on };
        private final int[] names = new int[] { R.string.forward, R.string.turn_left };
        static final int FORWARD = 0;
        static final int TURN_LEFT = 1;

        Action(int id)
        {
            this.id = id;
            this.icon = icons[id];
            this.name = names[id];
        }
    }
    
    private static final class ActionListAdapter extends ArrayAdapter<Action>
    {
        private final LayoutInflater inflater;

        ActionListAdapter(Context context, ArrayList<Action> list)
        {
            super(context, 0, list);
            inflater = LayoutInflater.from(context);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            ViewHolder holder;
            if(convertView == null)
            {
                convertView = inflater.inflate(R.layout.item, null);
                holder = new ViewHolder();
                holder.icon = (ImageView)convertView.findViewById(R.id.icon);
                holder.name = (TextView)convertView.findViewById(R.id.name);
                holder.button = (ImageButton)convertView.findViewById(R.id.button);
                convertView.setTag(holder);
            }
            else
                holder = (ViewHolder)convertView.getTag();

            final Action action = getItem(position);
            holder.icon.setImageResource(action.icon);
            holder.name.setText(action.name);
            holder.button.setOnClickListener(new OnClickListener()
    	    {
    	        @Override
    	        public void onClick(View v)
    	        {
    	        
    	        }
    	    });
    	    
    	    convertView.setOnClickListener(new OnClickListener()
    	    {
    	        @Override
    	        public void onClick(View v)
    	        {
    	           // Toast.makeText(getContext(), pi.name, Toast.LENGTH_SHORT).show();
    	        }
    	    });
         
            return convertView;
        }
       
        private static final class ViewHolder
        {
            ImageView icon;
            TextView name;
            ImageButton button;
        }
    }
	}
    
    


	

 

 

위의 소스는 MainActivity.java 소스 입니다.

 

 

옆의 버튼입니다..

버튼의 id 는 button 입니다.

익명사용자 님이 2013년 5월 14일 질문

1개의 답변

0 추천

ArrayList  에 선택된 Action 을 삭제 한 뒤 adapter 에서 

notifyDataSetChanged

를 호출 하세요

http://developer.android.com/intl/ko/reference/android/widget/BaseAdapter.html#notifyDataSetChanged()

aucd29 (218,390 포인트) 님이 2013년 5월 15일 답변
...