android listview 删除之后怎么刷新 listview

这个是TitleAdapter

package com.example.ming.myapplication;

import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

public class TitleAdapter extends BaseAdapter {
Context context;
List postlist2;
String id2;
String id="";
int ii=0;

public TitleAdapter(Context context, List<Article> postlist) {

    this.context = context;
    this.postlist2 = postlist;

}

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

@Override
public Object getItem(int position) {
    return null;
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    convertView = LayoutInflater.from(context).inflate(R.layout.activity_article, null);
    Object obj = convertView.getTag();

    ii=position;

    ViewHolder holder;//实现缓存 高效加载数据
    //如果为空
    if (obj == null) {
        holder = new ViewHolder(convertView);
        convertView.setTag(holder);
    } else {
        //緩存 通過viewholder存儲
        holder = (ViewHolder) obj;
    }
    Article posit = postlist2.get(position);
    holder.tv_tltleid.setText(posit.getWid() + "");
    holder.tv_tltlecontent.setText(posit.getTitle() + "");

    return convertView;
}

public class ViewHolder  {
    public View lv_title;
    public TextView tv_tltleid;
    public TextView tv_tltlecontent;
    public Button btn_neirong;
    public Button btn_delete;
    public ViewHolder(View rootView) {
        this.lv_title = rootView;
        this.tv_tltleid = (TextView) rootView.findViewById(R.id.tv_tltleid);
        this.tv_tltlecontent = (TextView) rootView.findViewById(R.id.tv_tltlecontent);

        this.btn_neirong=(Button)rootView.findViewById(R.id.btn_neirong);
        btn_neirong.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                Intent intent2 = new Intent(context, ContentActivity.class);
                String id2=tv_tltleid.getText().toString();
                Log.i("aaa",id2);
                intent2.putExtra("wid",id2);
                context.startActivity(intent2);
            }
        });


        this.btn_delete = (Button) rootView.findViewById(R.id.btn_delete);
        btn_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                String id = tv_tltleid.getText().toString();
                Log.i("1111", id);
                Log.i("11112", id);
                String url = "http://192.168.43.124:8080/test1/LoginServlet?jsp=delete&wid=" + id;
                new LoginTask().execute(url);
            }
        });

    }

    class LoginTask extends AsyncTask<String, Integer, String> {
        @Override
        protected String doInBackground(String... params) {
            String par = params[0];
            URL url = null;
            try {
                url = new URL(par);
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            String result = HttpUtil.doPost(url);
            return result;
        }

        //第四步
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            //保存数据

            if (result.equals("1")) {

                Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show();

                return;
            } else {
                if (result.equals("-1")) {
                    Toast.makeText(context, "删除失败", Toast.LENGTH_SHORT).show();
                    return;
                }
            }
        }
    }



}

}

这个是TitleActivity

package com.example.ming.myapplication;

import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.ListView;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import org.json.JSONArray;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**

  • Created by Ming on 2019/6/16. */

public class TitleActivity extends AppCompatActivity {

private ListView listView;

Article article;
JSONArray jsonArray;
ListView lv_title;
Context context;
Button button;
String id2="used";

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

    Intent intent=getIntent();

    id2=intent.getStringExtra("id2");
    context = this;
    String url = "http://192.168.43.124:8080/test1/LoginServlet?jsp=titleck&id2="+id2;
    new LoginTask().execute(url);

}



class LoginTask extends AsyncTask<String, Integer, String> {
    @Override
    protected String doInBackground(String... params) {
        String par = params[0];
        URL url = null;
        try {
            url = new URL(par);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        String result = HttpUtil.doPost(url);

        return result;
    }

    //第四步
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);


        final List<Article> list = new ArrayList<Article>();

        Gson gson1 = new Gson();
        final List<Article> list2 = gson1.fromJson(result, new TypeToken<List<Article>>() {
        }.getType());
        for (Article person1 : list) {
            System.out.println(person1.toString());
        }


        lv_title=(ListView)findViewById(R.id.lv_title);

        lv_title.setAdapter(new TitleAdapter(context,list2));


    }

}

}
1.

3个回答

notifyDataSetChanged();

as_csdn
取个什么名字好。 回复weixin_45274972: 参考这篇文章吧:https://www.jianshu.com/p/50515c3160d3
7 个月之前 回复
as_csdn
取个什么名字好。 回复weixin_45274972: 一般来说,通常的做法是在对应的adapter中写一个删除方法,类似这样的:public void deletItem(int pos) { DebugLog.e(pos + "删除的position"); mData.remove(pos); this.notifyDataSetChanged(); },执行删除操作时调用,其中的mData就是数据列表,参数是要删除的数据的position
7 个月之前 回复
weixin_45274972
weixin_45274972 this.btn_delete = (Button) rootView.findViewById(R.id.btn_delete); btn_delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String id = tv_tltleid.getText().toString(); Log.i("1111", id); //192.168.43.124 String url = "http://220.202.158.368080/test1/LoginServlet?jsp=delete&wid=" + id; new LoginTask().execute(url); notifyDataSetChanged(); } }); 是这样写吗?但是他还是没有刷新数据
7 个月之前 回复
weixin_45274972
weixin_45274972 回复流浪_过客: this.btn_delete = (Button) rootView.findViewById(R.id.btn_delete); btn_delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String id = tv_tltleid.getText().toString(); Log.i("1111", id); Log.i("11112", id); String url = "http://192.168.43.1248080/test1/LoginServlet?jsp=delete&wid=" + id; new LoginTask().execute(url); } });
7 个月之前 回复
as_csdn
取个什么名字好。 回复weixin_45274972: 在你执行完删除操作后,调用这个方法就行了,这是adapter自带的
7 个月之前 回复
weixin_45274972
weixin_45274972 请问是怎么写呢?能详细一点吗?我不太懂安卓不好意思。
7 个月之前 回复

建议使用recyclerview. listview也可以实现删除. 但是不太好用.

qq_32508519
Jimmy_buer 回复weixin_45274972: 当然可以. listview完全支持删除刷新.只是早都不用这个了.
7 个月之前 回复
fjd19921225
彩虹直至黑白iii丶 建议使用recyclerview. listview也可以实现删除. 但是不太好用.
7 个月之前 回复
weixin_45274972
weixin_45274972 那我这个删除就不能刷新了吗?
7 个月之前 回复

先用postlist2 .remove(position) 在调用notifyDataSetChanged();

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android ListView长按删除之后,调用notifyDataSetChanged
ListView 长按删除之后,调用notifyDataSetChanged但是界面上仍然显示此条数据,怎么回事啊 ![图片说明](https://img-ask.csdn.net/upload/201508/17/1439810797_65701.png)
android listview adapter
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, strs)); 其中lv是一个listview的对象,已获取lv的id,strs是已定义的字符串数组,现在只要添加这句,程序不报错,但是运行错误,删除这句就能运行了
android ListView 怎么通过键盘的del键 删除listView的选中项
为了适应有键盘的手机,添加了del键 直接删除 通过手机上下键选中的项目 我是这样做的 setChoiceMode(ListView.CHOICE_MODE_SINGLE) public boolean onKeyUp(int keyCode, KeyEvent event) { Log.i(TAG, "keyCode:"+keyCode); if(keyCode==KeyEvent.KEYCODE_DEL) { Log.i(TAG, "del"); if(myListView != null) { myListView.getCheckedItemPosition(); Log.i(TAG, ""+myListView.getItemsCanFocus()+myListView.getCheckedItemPosition()); int selectId=myListView.getCheckedItemPosition(); Log.i(TAG, "selectId:"+ selectId); if(selectId !=-1) { // TODO Auto-generated method stub showDeleteAlertDialog(showList.get(selectId));//删除的方法 } } } else if(keyCode==KeyEvent.KEYCODE_BACK) { onBackPressed(); } return super.onKeyDown(keyCode, event); } 可是这样一直获取不到焦点 和选择的项目 我该怎么做??怎么获取通过手机上下键选中的listView的项目??
删除后android刷新Listview
在我的item删除后我想要刷新我的listview。但是好像不起作用,我是少了什么东西了么?我用了`listAdapter.notifyDataSetChanged();`也不起作用。有没有人能帮帮我?谢谢。 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getActivity().setContentView(R.layout.dl_listview); View empty = getActivity().findViewById(R.id.empty); DLListView = (ListView) getActivity().findViewById(R.id.DLListView); DLListView.setEmptyView(empty); if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { Toast.makeText(getActivity(), "Error! No SDCARD Found!", Toast.LENGTH_LONG).show(); } else { File directory = new File(Environment.getExternalStorageDirectory() + File.separator + "St"); directory.mkdirs(); } DLListView = (ListView) getActivity().findViewById(R.id.DLListView); myList = new ArrayList<String>(); File sdCard = Environment.getExternalStorageDirectory(); file = new File(sdCard.getAbsolutePath() + "/St/"); File list[] = file.listFiles(); for (int i = 0; i < list.length; i++) { String fileName = list[i].getName(); fileName = fileName.replace(".txt", ""); myList.add(fileName); } listAdapter = new ArrayAdapter<String>(getActivity(), R.layout.simplerow, myList); DLListView.setAdapter(listAdapter); DLListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String textToPass = myList.get(position); Intent i = new Intent(getActivity(), ViewActivity.class); textToPass = textToPass.replace(textToPass + "", textToPass + ".txt"); i.putExtra("textToPass", textToPass); startActivity(i); } }); DLListView.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub registerForContextMenu(DLListView); return false; } }); } public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; String name = ((TextView) info.targetView).getText().toString(); menu.setHeaderTitle(name); menu.add(0, v.getId(), 0, "Delete"); } @Override public boolean onContextItemSelected(MenuItem item) { deletefunc(item.getItemId()); return true; } public void deletefunc(int id) { String filenamec = fileName1; filenamec = filenamec.replace(filenamec + "", filenamec + ".txt"); File folder = Environment.getExternalStorageDirectory(); String fileName = folder.getPath() + "/St/" + filenamec; File myFile = new File(fileName); if (myFile.exists()) myFile.delete(); Toast.makeText(getActivity(), fileName1+" Deleted", Toast.LENGTH_SHORT) .show(); listAdapter.remove(listAdapter.getItem(id)); } LogCat : 12-26 11:57:27.334: E/AndroidRuntime(5576): FATAL EXCEPTION: main 12-26 11:57:27.334: E/AndroidRuntime(5576): java.lang.IndexOutOfBoundsException: Invalid index 2131034154, size is 1 12-26 11:57:27.334: E/AndroidRuntime(5576): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 12-26 11:57:27.334: E/AndroidRuntime(5576): at java.util.ArrayList.get(ArrayList.java:304) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:337) 12-26 11:57:27.334: E/AndroidRuntime(5576): at free.st.app.MyDownloads.deletefunc(MyDownloads.java:137) 12-26 11:57:27.334: E/AndroidRuntime(5576): at free.st.app.MyDownloads.onContextItemSelected(MyDownloads.java:118) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.support.v4.app.FragmentManagerImpl.dispatchContextItemSelected(FragmentManager.java:1933) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:360) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:200) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:3691) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:929) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.widget.AdapterView.performItemClick(AdapterView.java:292) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.widget.AbsListView.performItemClick(AbsListView.java:1185) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2713) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.widget.AbsListView$1.run(AbsListView.java:3468) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.os.Handler.handleCallback(Handler.java:605) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.os.Handler.dispatchMessage(Handler.java:92) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.os.Looper.loop(Looper.java:137) 12-26 11:57:27.334: E/AndroidRuntime(5576): at android.app.ActivityThread.main(ActivityThread.java:4512) 12-26 11:57:27.334: E/AndroidRuntime(5576): at java.lang.reflect.Method.invokeNative(Native Method) 12-26 11:57:27.334: E/AndroidRuntime(5576): at java.lang.reflect.Method.invoke(Method.java:511) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:982) 12-26 11:57:27.334: E/AndroidRuntime(5576): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749) 12-26 11:57:27.334: E/AndroidRuntime(5576): at dalvik.system.NativeStart.main(Native Method)
android listview 删除item同时删除对应行数的数据库内容
``` listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?>parent,View view,int position,long id) { Map<String, Object> positioncurrent = list.get(position); comment.setId(Integer.parseInt(String.valueOf(positioncurrent))); int _id = comment.getId(); SQLiteDatabase db = databaseHelper.getWritableDatabase(); db.delete("comment",Comment.Commentinter.EVENT_ID + getString(R.string.dlx_wenhao),new String[]{String.valueOf(id)}); db.close(); list.remove(positioncurrent); adapter.notifyDataSetChanged(); listView.setAdapter(adapter); } }); } ``` 我完全新手,这是我写的监听事件,Comment类里是我数据库表属性的setget方法,逻辑上不知道对不对,只是现在它报错, java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.dengfugui.myapplication.Comment,不让我把positioncurrent进行类型转换,我应该怎么修改?或者基于我的 Map<String, Object>和Comment有没有啥更好的方法?求大神指点!!!!谢谢了!!!
Android listview与数据库同步问题
根据所选listview列表项的下标 , 对应数据库中设置的id进行删除列表项,假如一共有五个项,当我删除第五个项时,界面里还剩四个项,再当我添加一个项时,数据库里ID为6了,但界面里还是第五项,所以当我获取该项下标时为5,但数据库里的id却为6了!所以导致不能删掉,id和listview下标不同步,求解,谢谢
android listView 删除动画 当前Item 删了,但是动画总是从最后一行执行
点击ListView 的item中的控件,删除当前item时,想让它一动画的方式 消失,但是,点击删除时,item可以删除掉,但是动画总是执行的最后一行 求解、?? 这是主要代码 @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(mActivity).inflate(R.layout.layout_dialog_item_detial, null); holder = new ViewHolder(); holder.tv_time = (TextView) convertView.findViewById(R.id.tv_time); holder.tv_score = (TextView) convertView.findViewById(R.id.tv_score); holder.iv_delete = (ImageView) convertView.findViewById(R.id.iv_delete); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } DiagHistory dh = historyLists.get(position); holder.tv_time.setText(dh.getScanTime()); holder.tv_score.setText(dh.getDiaScore()); holder.iv_delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { View itemView = (View) holder.iv_delete.getParent(); removeListItem(itemView, position); SQLLiteService.getInstance(mActivity).deleteDialogHistory(holder.tv_time.getText().toString().trim()); } }); return convertView; } class ViewHolder { TextView tv_time, tv_score; ImageView iv_delete; } private void removeListItem(View rowView, final int positon) { final Animation animation = (Animation) AnimationUtils.loadAnimation(rowView.getContext(), R.anim.remove_dialog_list_item); animation.setAnimationListener(new AnimationListener() { public void onAnimationStart(Animation animation) { } public void onAnimationRepeat(Animation animation) { } public void onAnimationEnd(Animation animation) { historyLists.remove(positon); DialogItemDetailAdapter.this.notifyDataSetChanged(); animation.cancel(); } }); rowView.startAnimation(animation); }
android listview添加出现问题
我是一枚新手,在写添加listview并对数据库进行增删改查时遇到了问题,添加listview时我想添加一个item可是一添加就添加了好多行,还有插入数据后不能listview没有显示之前插入的值,求大神给看看!这是我的代码: ``` public class DLXMainActivity extends AppCompatActivity { private Toolbar mToolbar; public static EditText mDlxInput1, mDlxInput2;//输入框 public TextView mTitle, mContent, mTime;//显示内容 DatabaseHelper mDatabaseHelper = new DatabaseHelper(this); static List<Comment> mList = new ArrayList<>(); static Comment mComment = new Comment(); MyAdapter mAdapter; ListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dlx_task3_dlxmain); initViewValue(); } public void initViewValue() { findViews(); setSupportActionBar(mToolbar); setOnclicklistener(); } //数据库的初始化和按下删除的监听事件 public void setOnclicklistener() { mDatabaseHelper = new DatabaseHelper(this); mAdapter = new MyAdapter(this, mList); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mComment = mList.get(position); int positioncurrent = mComment.getId(); mDatabaseHelper.databaseDelete(positioncurrent); mList.remove(mComment); mAdapter.notifyDataSetChanged(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.dlx_task3_menu, menu); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_add: showDialog_Layout(DLXMainActivity.this); break; } return super.onOptionsItemSelected(item); } //对话框 private void showDialog_Layout(final Context context) { LayoutInflater inflater = LayoutInflater.from(this); final View textEntryView = inflater.inflate(R.layout.dlx_task3_dialoglayout, null); final AlertDialog.Builder builder = new AlertDialog.Builder(context); mDlxInput1 = (EditText) textEntryView.findViewById(R.id.dlx_Input1); mDlxInput2 = (EditText) textEntryView.findViewById(R.id.dlx_Input2); builder.setCancelable(false); builder.setTitle(R.string.dlx_add); builder.setView(textEntryView); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle(""); } }); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { mDatabaseHelper.databaseInsert(); mDatabaseHelper.databaseFind(context); mAdapter.notifyDataSetChanged(); } }); builder.show(); } public void findViews() { mToolbar = (Toolbar) findViewById(R.id.toolbar); mTitle = (TextView) findViewById(R.id.dlx_maintitle); mContent = (TextView) findViewById(R.id.dlx_maincontent); mTime = (TextView) findViewById(R.id.dlx_maintime); mListView = (ListView) findViewById(R.id.dlx_lv); } } public class MyAdapter extends BaseAdapter { public List<Comment> list; public LayoutInflater mInflater = null; Context context; DatabaseHelper mDatabaseHelper = new DatabaseHelper(context); public MyAdapter(Context context, List<Comment> list) { this.mInflater = LayoutInflater.from(context); this.context = context; this.list = list; } //ViewHolder静态类 static class ViewHolder { public TextView title; public TextView content; public TextView time; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } //获取一个在数据集中指定索引的视图来显示数据 public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; //如果缓存convertView为空,则需要创建View if (convertView == null) { holder = new ViewHolder(); //根据自定义的Item布局加载布局 convertView = mInflater.inflate(R.layout.dlx_task3_commentlayout, null); holder.title = (TextView) convertView.findViewById(R.id.dlx_maintitle); holder.content = (TextView) convertView.findViewById(R.id.dlx_maincontent); holder.time = (TextView) convertView.findViewById(R.id.dlx_maintime); //将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出Tag convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.title.setText(list.get(position).getTitle()); holder.content.setText(list.get(position).getContent()); holder.time.setText(mDatabaseHelper.getTimeShow(context, (list.get(position).getTime()))); return convertView; } } public class DatabaseHelper extends SQLiteOpenHelper { public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "Comment.db"; public static final String TABLE_NAME = " comment"; public long mDatetimecurrent; Context context; public long mDatetime; // TODO: 2016/5/18 public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE" + TABLE_NAME + "(" + Comment.Commentinter.EVENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + Comment.Commentinter.EVENT_TITLE + " TEXT NOT NULL, " + Comment.Commentinter.EVENT_CONTENT + " TEXT NOT NULL, " + Comment.Commentinter.EVENT_TIME + " INTEGER NOT NULL);"); } public void databaseInsert() { SQLiteDatabase db = getWritableDatabase(); ContentValues values = new ContentValues(); mDatetime = System.currentTimeMillis(); //开始组装第一条数据 values.put("title", String.valueOf(DLXMainActivity.mDlxInput1.getText())); values.put("content", String.valueOf(DLXMainActivity.mDlxInput2.getText())); values.put("time", mDatetime); db.insert(TABLE_NAME, null, values);//插入第一条数据 db.close(); } /** * 删除数据库元素 * * @param */ public void databaseDelete(int positioncurrent) { SQLiteDatabase db = getWritableDatabase(); String[] args = {String.valueOf(positioncurrent)}; db.delete("comment", Comment.Commentinter.EVENT_ID + "=?", args); db.close(); } /** * 从数据库中取值并放到listview中 * @param context */ public void databaseFind(Context context) { this.context = context; SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.query(DatabaseHelper.TABLE_NAME,new String[] {Comment.Commentinter.EVENT_ID, Comment.Commentinter.EVENT_TITLE, Comment.Commentinter.EVENT_CONTENT,Comment.Commentinter.EVENT_TIME}, null, null, null, null, null, null); //DLXMainActivity.mList.clear(); while (cursor.moveToNext()) { String title = cursor.getString(cursor.getColumnIndex(Comment.Commentinter.EVENT_TITLE)); String content = cursor.getString(cursor.getColumnIndex(Comment.Commentinter.EVENT_CONTENT)); long time = cursor.getLong(cursor.getColumnIndex(Comment.Commentinter.EVENT_TIME)); int id = cursor.getInt(cursor.getColumnIndex(Comment.Commentinter.EVENT_ID)); DLXMainActivity.mComment.setTitle(title); DLXMainActivity.mComment.setContent(content); DLXMainActivity.mComment.setTime(time); DLXMainActivity.mComment.setId(id); DLXMainActivity.mList.add(DLXMainActivity.mComment); } cursor.close(); db.close(); } public String getTimeShow(Context context, long datetime) { mDatetimecurrent = System.currentTimeMillis(); long time = mDatetimecurrent - datetime; if (time / 1000 != 0) { if (time / 60000 != 0) { if (time / 3600000 != 0) { if (time / 86400000 != 0) { return time / 86400000 + context.getString(R.string.dlx_day1); } else { return time / 3600000 + context.getString(R.string.dlx_hour); } } else { return time / 60000 + context.getString(R.string.dlx_minute); } } else { return time / 1000 + context.getString(R.string.dlx_second); } } else { return context.getString(R.string.dlx_gang); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { onCreate(db); } @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); } ```
android 在listview滑动删除的时候怎么禁止其ITEM跳转
// 如果滑动了>50个像素,就显示出删除按钮 if (startX > event.getX() + 50) { startX = 0;// 因为公用一个事件处理对象,防止错乱,还原startX值 scrollView(view, HorizontalScrollView.FOCUS_RIGHT); mScrollView = view; } else { scrollView(view, HorizontalScrollView.FOCUS_DOWN); //这个地方加什么可以让滑动删除的时候不跳转。 Intent intent = new Intent(myActivity,ProductDetailActvivity.class); intent.putExtra("Url", ProductList.get(position).getLinkUrl()); myActivity.startActivity(intent); } 我现在是 在滑动删除listview的时候会跳转。怎么处理
listview删除item后Fragment刷新问题
android开发 我的Fragment中有一个listview,设置了长按删除item的功能,现在的问题是,我adapter.notifyDataSetChanged();是会重新加载listview,但是我的listview下面有一个imageview,就会出现删除的那个item空白,而imageview不会占据那个删除的item的位置,比如说,我123+,删除3,就会出现12 +,我不会删除那个空白,我就想能不能重新加载这个Fragment,网上的都看不懂,求大神指导一下~
Android ListView通过Cursor获取数据问题
一个便签应用,实现了基本的功能,现在就是Cursor获取数据看不懂,先简单说说几个相关的文件。 NoteListActivity在onCreate中绑定了一个NoteListAdapter,此Adapter的bindView代码如下: ``` @Override public void bindView(View view, Context context, Cursor cursor) { if (view instanceof NotesListItem) { NoteItemData itemData = new NoteItemData(context, cursor); ((NotesListItem) view).bind(context, itemData, mChoiceMode, isSelectedItem(cursor.getPosition())); } } ``` NoteItemData类的构造函数中有一句是(其中静态常量TYPE_COLUMN=9): ``` mType = cursor.getInt(TYPE_COLUMN); ``` NotesListItem类继承自LinearLayout,其中bind方法部分代码如下: 这部分功能是,长按Item时,右边会出现CheckBox选择后可以进行删除操作,不知道if语句里面**为什么长按时data.getType() = Notes.TYPE_NOTE(Notes.TYPE_NOTE是常量0)?** ``` public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) { if (choiceMode && data.getType() == Notes.TYPE_NOTE) { mCheckBox.setVisibility(View.VISIBLE); mCheckBox.setChecked(checked); } else { mCheckBox.setVisibility(View.GONE); } ``` NoteItemData的getType()方法如下: ``` public int getType() { return mType; } ``` NoteItemData还有一个方法是getNoteType: ``` public static int getNoteType(Cursor cursor) { return cursor.getInt(TYPE_COLUMN); } ``` **这两个方法的内容是一样的,为什么getNoteType=1,getType在长按时=0,否则=1?** 在线等高手回答,研究了好几天了
Android中HorizontalScrollView和ListView的水平滑动事件冲突
HorizontalScrollView中包含一个Fragment,Fragment里边有一个自定义的ListView,ListView是类似QQ可以水平滑动删除的自定义ListView,现在ScrowView和ListView出现水平滑动冲突,求大神帮助
关于ListView嵌套ListView,删除里层条目获取外层position的问题。(新人币少,烦请大佬悉心解答:D)
![如图](https://img-ask.csdn.net/upload/201707/11/1499743040_424581.png) 当我准备删除里层item的时候,如何知道外层的position,从而及时刷新适配? 我整体的布局是ListView嵌套ListView;外层ListView的item布局是左TextView右ListView;里层ListView的item是TextView和ImageView。 还有我在第一层ListView的item布局添加了android:descendantFocusability="blocksDescendants"之后,可以获取到那个日期的事件,但是依旧获取不到右边里层ListView的事件,也依旧获取不到外层ListView的position。
删除listView多余的部分
渲染一系列图片的listVIew,我想要去掉灰色。怎么实现? ![CSDN移动问答][1] **list_View.xml** <?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#efefef" android:orientation="vertical" > <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#00000000" android:divider="@android:color/black" android:dividerHeight="1.0sp" android:textColor="#000000" /> </RelativeLayout> **image.xml** <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#A4A4A4" android:orientation="horizontal" > <ImageView android:id="@+id/imageStatus" android:layout_alignParentTop="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" /> </LinearLayout> [1]: http://i.stack.imgur.com/z2fMy.png
小白求教 android中listview的点击冲突问题
刚才写了一段代码 想通过点击listview上每一项的imageview删除数据库中对应的这一条数据, 但运行时每次都必须点击两下imageview才能删除这一项,之前想过在listview的适配器中来做这个 操作,但是看过的代码好像都没有这么做过并且这样做的话没法更新数据,现在想问问 有没有什么好的方法可以解决这个问题 。对了,设置focusable和clickable属性也没法处理。设置成imagebutton的话 , 由于listview的每一项是通过反射来获取到的 给imagebutton设置onclick属性的话 ,数据就没法传递了,毕竟还是要删除数据库中的数据 ```package com.personal.fyd.blacknumber; import android.content.Context; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import java.util.List; /** * Created by asus on 2016/10/19. */ public class MyAdapter extends BaseAdapter { private List<NumberBean> list; private Context context; public MyAdapter(List<NumberBean> list, Context context) { this.list = list; this.context = context; // for (NumberBean bean:list // ) { // Log.i(context+"",bean.getNumber()+" "+bean.getMode()); // } } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; NumberBean bean; if (convertView == null) { convertView = View.inflate(context, R.layout.item, null); viewHolder = new ViewHolder(); viewHolder.number_tv = (TextView) convertView.findViewById(R.id.tv_number); viewHolder.mode_tv = (TextView) convertView.findViewById(R.id.tv_mode); viewHolder.delete_iv = (ImageView) convertView.findViewById(R.id.iv_delete); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } bean = list.get(position); viewHolder.number_tv.setText(bean.getNumber()); String mode = bean.getMode(); if ("1".equals(mode)){ viewHolder.mode_tv.setText("电话拦截"); }else if ("2".equals(mode)){ viewHolder.mode_tv.setText("短信拦截"); }else if ("3".equals(mode)){ viewHolder.mode_tv.setText("全部拦截"); } return convertView; } static class ViewHolder { TextView number_tv; TextView mode_tv; ImageView delete_iv; } } ``` package com.personal.fyd.blacknumber; import android.content.Context; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.Toast; import java.util.List; public class MainActivity extends AppCompatActivity { private final Context context = MainActivity.this; private ListView lv; private AlertDialog alertDialog; private NumberDao numberdao; private MyAdapter adapter; private List<NumberBean> list; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); updateLV(); } private void updateLV() { list = numberdao.findAll(); adapter = new MyAdapter(list,MainActivity.this); lv.setAdapter(adapter); } private void initView() { lv = (ListView) findViewById(R.id.lv); numberdao = new NumberDao(this); iv = (ImageView) findViewById(R.id.iv_delete); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { Toast.makeText(context,"再次点击删除此项",Toast.LENGTH_SHORT).show(); view.findViewById(R.id.iv_delete).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String num = list.get(position).getNumber(); // Toast.makeText(context,num,Toast.LENGTH_SHORT).show(); numberdao.delete(num); numberdao.findAll(); updateLV(); } }); } }); } public void delete(View view){ } public void add(View view){ showDiagle(); } //显示对话框 private void showDiagle(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = View.inflate(this,R.layout.diagle,null); builder.setView(view); final EditText editText = (EditText) view.findViewById(R.id.blacknumber_et); final CheckBox call_cb = (CheckBox) view.findViewById(R.id.call_cb); final CheckBox sms_cb = (CheckBox) view.findViewById(R.id.sms_cb); Button commit = (Button) view.findViewById(R.id.commit_btn); Button cancel = (Button)view.findViewById(R.id.cancel_btn); commit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String number = editText.getText().toString(); //判断是否为空 if (TextUtils.isEmpty(number)){ Toast.makeText(MainActivity.this,"number ",Toast.LENGTH_SHORT).show(); return; } String mode; if (call_cb.isChecked()&&sms_cb.isChecked()){ mode = "3"; }else if (call_cb.isChecked()){ mode = "1"; }else if (sms_cb.isChecked()){ mode = "2"; }else { Toast.makeText(MainActivity.this,"请至少选择一种拦截方式",Toast.LENGTH_SHORT).show(); return; } //操作合法 插入数据 numberdao.insert(number,mode); //插入成功 重新查询 alertDialog.dismiss(); updateLV(); } }); cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { alertDialog.dismiss(); } }); alertDialog = builder.create(); alertDialog.show(); } } ``` ```
安卓实现listview嵌套listview
![图片说明](https://img-ask.csdn.net/upload/201510/26/1445834491_579289.jpg) 点击上面的最上面一项里面listview中的哪个小手机删除的时候把下面那一项里面的listview中的三项都删除了 还有就是前面三项都删了的时候删除第四项的时候下标越界 我的思路是我在删除的时候并不知道我删除的到底是那一大项里面的数据。 求解啊
android菜鸟求助:ListView点击删除按钮时,总是最后一个item被删除
如题,我的ListView的每个item都有一个删除按钮,但是每次点击按钮后都是删除了最后一个item。 调试后position是正确的,索引是没有问题的,每次删除的都是正确的位置,而且每次item一删除就调用notifyDataSetChanged()去刷新,这个问题困扰好几天了…麻烦大神帮帮忙。 public View getView(final int position, View view, ViewGroup arg2) { // TODO Auto-generated method stub if(view == null){ view = inflater.inflate(R.layout.mission_item, null); SharedPreferences shared_mission = getSharedPreferences("mission", Activity.MODE_PRIVATE); mission_name = (TextView) view.findViewById(R.id.pro_name); mission_add = (TextView) view.findViewById(R.id.pro_add); mission_phone = (TextView) view.findViewById(R.id.pro_phone); mission_name.setText(shared_mission.getString("name", "")); mission_add.setText(shared_mission.getString("address", "")); mission_phone.setText(shared_mission.getString("phone", "")); } Button del = (Button) view.findViewById(R.id.del); del.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { arr.remove(position); mission_adapter.notifyDataSetChanged(); } }); //删除按钮 listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) { Intent intent = new Intent(); intent.setClass(MainActivity.this, MissionInfo.class); startActivity(intent); } }); return view; } }
listview 如何删除sdcard卡文件并刷新界面?红色部分
package com.genny; import java.io.File; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.ContextMenu; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.CursorAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.*; public class MusicListActivity extends Activity{ private ListView listview; private Cursor c = null; private File file = null; private CursorAdapter adapter; private ScanSdReceiver scanSdReceiver = null; private String[] _title = null; private String[] _name = null; private String[] _size; private String[] _path = null; private String[] _singer = null; private String[] _album = null; private int[] _time; private int index; //menu菜单 private static final int ITEM1 = Menu.FIRST; private static final int ITEM2 = Menu.FIRST + 1; private static final int ITEM3 = Menu.FIRST + 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.musiclist); listview = (ListView)findViewById(android.R.id.list); c = this.getContentResolver() .query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Audio.Media.TITLE,//歌曲名0 MediaStore.Audio.Media.DURATION,//时长1 MediaStore.Audio.Media.ARTIST,//歌手2 MediaStore.Audio.Media._ID,//ID3 MediaStore.Audio.Media.DISPLAY_NAME,//文件名4 MediaStore.Audio.Media.ALBUM,//专辑5 MediaStore.Audio.Media.SIZE,//大小6 MediaStore.Audio.Media.DATA},//路径7 null, null, null); /* if (c==null || c.getCount()==0){ builder = new AlertDialog.Builder(this); builder.setMessage("存储列表为空...").setPositiveButton("确定", null); ad = builder.create(); ad.show(); }*/ c.moveToFirst(); _title = new String[c.getCount()]; _name = new String[c.getCount()]; _path = new String[c.getCount()]; _singer = new String[c.getCount()]; _album = new String[c.getCount()]; _size = new String[c.getCount()]; _time = new int[c.getCount()]; for(int i=0;i<c.getCount();i++){ _title[i] = c.getString(0); _name[i] = c.getString(4); _path[i] = c.getString(7); _singer[i] = c.getString(2); _album[i] = c.getString(5); _size[i] = c.getString(6); _time[i] = c.getInt(1); c.moveToNext(); } adapter = new SimpleCursorAdapter(this, R.layout.listitem, c, new String[]{MediaStore.Audio.AudioColumns.TITLE, MediaStore.Audio.AudioColumns.ARTIST}, new int[]{R.id.music, R.id.songer}); listview.setAdapter(adapter); listview.setOnItemClickListener(new ListItemClickListener()); registerForContextMenu(listview); } class ListItemClickListener implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> arg0, View view, int position, long id) { // TODO Auto-generated method stub Intent i = new Intent(MusicPlayerService.MUSIC_CONTROL); i.putExtra("cmd", MusicPlayerService.CMD_JUMP); i.putExtra("pos", position); sendBroadcast(i); finish(); } } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub index = ((AdapterContextMenuInfo)menuInfo).position;//获取menu点击项的position menu.setHeaderIcon(R.drawable.header_icon); menu.setHeaderTitle(_title[index]); menu.add(0,ITEM1,0,"播放"); menu.add(0,ITEM2,0,"删除"); menu.add(0,ITEM3,0,"详细"); super.onCreateContextMenu(menu, v, menuInfo); } public boolean onContextItemSelected(MenuItem item){ switch(item.getItemId()){ case ITEM1: Intent i = new Intent(MusicPlayerService.MUSIC_CONTROL); i.putExtra("cmd", MusicPlayerService.CMD_JUMP); i.putExtra("pos", index); sendBroadcast(i); finish(); break; [color=red]case ITEM2: /*下面的代码能够删除listview中的音频文件,但是删除之后如何刷新呢?*/ file = new File(_path[index]); if(file.exists()){ file.delete(); } break;[/color] case ITEM3: Intent intent = new Intent(MusicListActivity.this,MusicInfo.class); intent.putExtra("_Name", _name[index]); intent.putExtra("_Size", _size[index]); intent.putExtra("_Singer", _singer[index]); intent.putExtra("_Album", _album[index]); intent.putExtra("_Time", _time[index]); intent.putExtra("_Path", _path[index]); startActivity(intent); System.out.println("Name:"+_name[index]+" Size:"+_size[index]+" Path:"+_path[index]+" Singer:"+_singer[index]+" Album:"+_album[index]+" Time:"+_time[index]); break; default: break; } return super.onContextItemSelected(item); } //添加menu菜单 public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); menu.add(0,ITEM1,0,"更新列表").setIcon(R.drawable.update_file); menu.add(0,ITEM2,0,"返回").setIcon(R.drawable.menu_exit); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case ITEM1: scanSdCard(); break; case ITEM2: onBackPressed(); break; default: break; } return true; } //扫描本地sdcard卡文件 private void scanSdCard(){ IntentFilter intentfilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED); intentfilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED); intentfilter.addDataScheme("file"); scanSdReceiver = new ScanSdReceiver(); registerReceiver(scanSdReceiver, intentfilter); sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://"+Environment.getExternalStorageDirectory().getAbsolutePath()))); } @Override public void onBackPressed() { // TODO Auto-generated method stub if (scanSdReceiver!=null) unregisterReceiver(scanSdReceiver); this.finish(); super.onBackPressed(); } }
Android新手急求:ListView点击删除按钮时,总是最后一个item被删除
如题,我的ListView的每个item都有一个删除按钮,但是每次点击按钮后都是删除了最后一个item。 调试后position是正确的,索引是没有问题的,每次删除的都是正确的位置,而且每次item一删除就调用notifyDataSetChanged()去刷新,这个问题困扰好几天了…麻烦大神帮帮忙。 另外我这个MyAdapter类是写在MainActivity类里面的,我是有添加到arr里的,纯粹是为了方便……我不知道是不是这个引起的问题。 public class MyAdapter extends BaseAdapter { private Context context; private LayoutInflater inflater; public ArrayList<String> arr; public MyAdapter(Context context) { super(); this.context = context; inflater = LayoutInflater.from(context); arr = new ArrayList<String>(); } @Override public int getCount() { return arr.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(final int position, View convertView, ViewGroup arg2) { // TODO Auto-generated method stub ViewHolder viewHolder = null; if(convertView == null){ viewHolder = new ViewHolder(); convertView = inflater.inflate(R.layout.mission_item, null); viewHolder.mission_name = (TextView) convertView.findViewById(R.id.pro_name); viewHolder.mission_add = (TextView) convertView.findViewById(R.id.pro_add); viewHolder.mission_phone = (TextView) convertView.findViewById(R.id.pro_phone); viewHolder.del = (Button) convertView.findViewById(R.id.del); SharedPreferences shared_mission = getSharedPreferences("mission", Activity.MODE_PRIVATE); viewHolder.mission_name.setText(shared_mission.getString("name", "")); viewHolder.mission_add.setText(shared_mission.getString("address", "")); viewHolder.mission_phone.setText(shared_mission.getString("phone", "")); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.del.setTag(position); viewHolder.del.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub arr.remove(position); mission_adapter.notifyDataSetChanged(); } }); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) { Intent intent = new Intent(); intent.setClass(MainActivity.this, MissionInfo.class); startActivity(intent); } }); return convertView; } class ViewHolder { //任务界面 TextView mission_name,mission_add,mission_phone; Button del; } }
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问