3

私はグリッドビューに取り組んでおり、私はandroid.Iは以前にグリッドビューで問題を抱えていましたが、それを自分で解決しました。コンテキストタスクに追加された新しい機能とは別にコードが同じであるため、リンクを投稿してい ます。次のアクティビティに渡すことができるようにクリックするimgの位置 残りのコードは次のとおりです

@Override  
public boolean onContextItemSelected(MenuItem item) {  
    if(item.getTitle()=="View"){function1(item.getItemId());}  
    else if(item.getTitle()=="Details"){function2(item.getItemId());}  
    else if(item.getTitle()=="Delete"){function3(item.getItemId());}  
    else {return false;}  
    return true;  
}  

public void function1(int id){ 


    //String prompt;
    // Sending image id to FullScreenActivity

    /*Toast.makeText(getApplicationContext(), 
                path, 
                Toast.LENGTH_LONG).show();*/
    Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
    i.putExtra("id", path );
    startActivity(i);
}  
public void function2(int id){  
    Toast.makeText(this, "Details func called", Toast.LENGTH_SHORT).show();  
} 
public void function3(int id){  
    File file = new File(path);
    if(file.exists())
    {
        boolean deleted = file.delete();
    }
    myImageAdapter.notifyDataSetChanged();

    //adapter.notifyDataSetChanged();

    //gv.invalidateViews();


    Toast.makeText(this, "function delete called", Toast.LENGTH_SHORT).show();  
} 

評判が悪いので画像を投稿することはできませんが、削除機能が呼び出されると画像は削除されますが、グリッドビューに空のスペースがあります。削除機能が呼び出された後、空のスペースが自動的に自動入力されるようにします。

4

1 に答える 1

5

アダプターの imageList からファイルを削除する必要があります。それがないと、ファイル パスがまだリストにあるため、イメージのロードが試行されて失敗し、空のスペースが発生します。

public class ImageAdapter extends BaseAdapter {
    private Context mContext;
    ArrayList<String> itemList = new ArrayList<String>();

    public ImageAdapter(Context c) {
        mContext = c;   
    }

    void add(String path){
        itemList.add(path); 
    }

    void remove(String path){
        itemList.remove(path);
    }
}

public void function3(int id){  
    File file = new File(path);
    if(file.exists())
    {
        boolean deleted = file.delete();
    }
    myImageAdapter.remove(path);
    myImageAdapter.notifyDataSetChanged();

    Toast.makeText(this, "function delete called", Toast.LENGTH_SHORT).show();  
}
于 2013-05-06T08:40:03.903 に答える