Java 在Listview中将所选项目居中

Java 在Listview中将所选项目居中,java,android,android-listview,Java,Android,Android Listview,您好,我想将当前选定的listview项居中。ie将项目滚动到listview的中心,即使单击listview时它有一个项目,它也应该移动到listview的中心 IE当我在itemclick listner中单击项目时,它应该将当前选定的项目居中。 我的示例代码是 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (

您好,我想将当前选定的listview项居中。ie将项目滚动到listview的中心,即使单击listview时它有一个项目,它也应该移动到listview的中心

IE当我在itemclick listner中单击项目时,它应该将当前选定的项目居中。 我的示例代码是

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {

    if (civ != null) {

        // civ.setVisibility(View.VISIBLE);
        civ.setBackgroundColor(Color.TRANSPARENT);
    }

    civ = (CustomImageView) view.findViewById(R.id.civ_shelfBook_BookImage);

    BooksAdapter.selectedPosition = position;
    ref.get(civ.getShelfID()).notifyDataSetChanged();
    DetailActivity.shelfID = civ.getShelfID();
    DetailActivity.currentlySelected = position;

    // GeneralModel.actionIntent = new Intent(contex, DetailActivity.class);
    // activity.startActivity(GeneralModel.actionIntent);
    // GeneralModel.actionIntent = null;

    Toast.makeText(contex, "Child Clicked" + civ.shelfID,
            Toast.LENGTH_SHORT).show();
    //

}
@覆盖
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
如果(civ!=null){
//civ.setVisibility(视图可见);
civ.setBackgroundColor(颜色:透明);
}
civ=(CustomImageView)view.findViewById(R.id.civ\u shelfBook\u BookImage);
BooksAdapter.selectedPosition=位置;
ref.get(civ.getShelfID()).notifyDataSetChanged();
DetailActivity.shelfID=civ.getShelfID();
DetailActivity.currentlySelected=位置;
//GeneralModel.actionIntent=新的意图(contex,DetailActivity.class);
//活动.开始触觉(一般模型.动作意图);
//GeneralModel.actionIntent=null;
Toast.makeText(contex,“Child Clicked”+civ.shelfID,
吐司。长度(短)。show();
//
}

你可以做这样的事情。。看我的例子

此示例有一个textview项目。单击项目时,文本将居中。您可以根据需要进行修改,以拥有自定义视图而不是文本视图

    ListView listView = new ListView(this);
    stringArrayList.add("ONE");
    stringArrayList.add("TWO");
    stringArrayList.add("THREE");
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,stringArrayList);
    listView.setAdapter(arrayAdapter);
    setContentView(listView);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        TextView previousView = null; // to hold the previous clicked view
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            TextView textView = (TextView)view.findViewById(android.R.id.text1);
            if(previousView != null) {
                // revert the previous view when a new item is clicked
                previousView.setGravity(Gravity.CENTER_VERTICAL);
            }
            textView.setGravity(Gravity.CENTER);
            previousView = textView;
        }
    });
ListView ListView=新的ListView(此);
stringArrayList.添加(“一”);
stringArrayList.添加(“两个”);
stringArrayList.添加(“三”);
ArrayAdapter ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,stringArrayList);
setAdapter(arrayAdapter);
setContentView(listView);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
TextView-previousView=null;//保存上一个单击的视图
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView TextView=(TextView)view.findViewById(android.R.id.text1);
如果(上一个视图!=null){
//单击新项目时还原上一个视图
上一视图。设置重力(重力。垂直中心);
}
textView.setGravity(Gravity.CENTER);
previousView=文本视图;
}
});

您想将其放在整个
列表视图的中心位置,还是放在其所在行的中心位置?你有你想要的图像吗?我想将所选行居中。也就是说,如果我的listview有10行,我点击第2行,它应该在第5行所在的位置。不管我是否要给它加衬垫。这将是最好的,因为它应该工作