想在android中创建循环列表

时间:2013-03-12 09:08:56

标签: android list mobile circular-list

过去3天我一直面临一个小问题。我的任务是设计一个带有两个片段的屏幕。(左侧和右侧)

Leftside片段将包含一个列表,但此列表将以圆形视图显示,例如

| @
| - > @

| ---> @

| -----> @

| ------> @

| -------> @

| -------> @

| -------> @

| ------> @

| -----> @

| ----> @

| - > @

| @

并且它应该是可旋转的,当我旋转列表时,我必须显示与第二个(右侧)片段中心的列表项对应的数据。我打算用碎片。

任何人都可以帮我解决问题

谢谢

2 个答案:

答案 0 :(得分:1)

这是我的建议:

您可以使用ListView,然后自己绘制所有子视图。

好的,你可以这样做:

通过创建一个新类并从ListView类派生该类来创建自己的ListView。 然后,如果需要,可以使用此方法setDivider(Drawable divider)删除分隔符 然后你将不得不使用drawChild(Canvas canvas,View child,long drawingTime) 此外,您可能最终使用此方法以及受保护的void dispatchDraw(Canvas canvas)///将需要在新的ListView类中重写以获得更多控制

如果循环列表中只包含字符串,则必须从列表项的中间索引开始截断字符串....生成循环运动影响。

这里我认为ListView类每次在列表上有移动时都会调用drawChild方法,并且我们可以生成轻微的动画

让我知道你如何继续...

答案 1 :(得分:1)

如果您将使用自定义适配器,则在您的bindview方法中..抓取每个子视图并为视图提供一个新的边距布局参数,其乘数根据存在的子视图总数递增和递减。

你可以通过getCount();

显示所有孩子

将边距布局应用于视图组。

我做了同样的事情,除了我的结构对应于像模式一样的梯子。

编辑: 这些是我的代码中的一些破碎片段,可以让您了解。

//This is my custom adapter that extends CursorAdapter
 @Override
    public void bindView(View view, Context context, final Cursor cursor) 
{
final RelativeLayout parent = (RelativeLayout)view.findViewById(R.id.text_wrapper);
//This is a parent view that i assigned as a top parent in my xml defining rows of listview
I am finding it through view of bindview. If i don't do this I'll get NPE.

//this is how you will be setting margins for each view

ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) parent
                .getLayoutParams();
//here I am getting my relative layouts margin params.
mlp.leftMargin = 50*multiplier; //this will offset your each row. here multiplier can be like 0,1,2,3,2,1,0 giving you a circular view.you might have to write some method to get your desired multiplier value.

每次调用NotifyDatasetChanged时都会调用绑定视图,并为屏幕上可见的每一行调用绑定视图。因此,您可以获得可见行的圆形图案。

}